wiki:xref:dokuwiki:inc:template.php
Различия
Показаны различия между двумя версиями страницы.
| wiki:xref:dokuwiki:inc:template.php [2024/08/26 00:54] – создано vladpolskiy | wiki:xref:dokuwiki:inc:template.php [2024/08/26 01:24] (текущий) – vladpolskiy | ||
|---|---|---|---|
| Строка 3: | Строка 3: | ||
| 2 | 2 | ||
| 3 /** | 3 /** | ||
| - | 4 * DokuWiki | + | 4 * Функции шаблонов |
| 5 * | 5 * | ||
| 6 * @license | 6 * @license | ||
| Строка 22: | Строка 22: | ||
| 21 use dokuwiki\File\PageResolver; | 21 use dokuwiki\File\PageResolver; | ||
| 22 | 22 | ||
| - | 23 /** | + | 23/** |
| - | 24 * Access a template file | + | 24* Доступ к файлу шаблона |
| - | 25 * | + | 25* |
| - | 26 * Returns the path to the given file inside the current template, uses | + | 26* Возвращает путь к указанному файлу внутри текущего шаблона, использует |
| - | 27 * default template if the custom version doesn' | + | 27* шаблон по умолчанию, |
| - | 28 * | + | 28* |
| - | 29 * @param string $file | + | 29* @param |
| - | 30 * @return string | + | 30* @возвращаемая |
| - | 31 * | + | 31* |
| - | 32 * @author Andreas Gohr < | + | 32* @автор Андреас Гор |
| - | 33 */ | + | 33*/ |
| 34 function template($file) | 34 function template($file) | ||
| 35 { | 35 { | ||
| Строка 43: | Строка 43: | ||
| 42 } | 42 } | ||
| 43 | 43 | ||
| - | 44 /** | + | 44/** |
| - | 45 * Convenience function to access template dir from local FS | + | 45* Удобная функция для доступа к каталогу шаблонов из локальной ФС |
| - | 46 * | + | 46* |
| - | 47 * This replaces the deprecated | + | 47* Заменяет устаревшую константу |
| - | 48 * | + | 48* |
| - | 49 * @param string $tpl The template to use, default to current one | + | 49* @param |
| - | 50 * @return string | + | 50* @возвращаемая |
| - | 51 * | + | 51* |
| - | 52 * @author Andreas Gohr < | + | 52* @автор Андреас Гор |
| - | 53 */ | + | 53*/ |
| 54 function tpl_incdir($tpl = '' | 54 function tpl_incdir($tpl = '' | ||
| 55 { | 55 { | ||
| Строка 60: | Строка 60: | ||
| 59 } | 59 } | ||
| 60 | 60 | ||
| - | 61 /** | + | 61/** |
| - | 62 * Convenience function to access template dir from web | + | 62* Удобная функция доступа к каталогу шаблонов из Интернета |
| - | 63 * | + | 63* |
| - | 64 * This replaces the deprecated | + | 64* Заменяет устаревшую константу |
| - | 65 * | + | 65* |
| - | 66 * @param string $tpl The template to use, default to current one | + | 66* @param |
| - | 67 * @return string | + | 67* @возвращаемая |
| - | 68 * | + | 68* |
| - | 69 * @author Andreas Gohr < | + | 69* @автор Андреас Гор |
| - | 70 */ | + | 70*/ |
| 71 function tpl_basedir($tpl = '' | 71 function tpl_basedir($tpl = '' | ||
| 72 { | 72 { | ||
| Строка 77: | Строка 77: | ||
| 76 } | 76 } | ||
| 77 | 77 | ||
| - | 78 /** | + | 78/** |
| - | 79 * Print the content | + | 79* Распечатать содержимое |
| - | 80 * | + | 80* |
| - | 81 * This function is used for printing all the usual content | + | 81* Эта функция используется для печати всего обычного контента. |
| - | 82 * (defined by the global | + | 82* (определяется глобальной переменной |
| - | 83 * outputfunction(s) from html.php | + | 83* выходные функции из html.php |
| - | 84 * | + | 84* |
| - | 85 * Everything that doesn' | + | 85* Все, что не использует основной файл шаблона, |
| - | 86 * handled by this function. ACL stuff is not done here either. | + | 86* обрабатывается этой функцией. ACL-списки здесь тоже не обрабатываются. |
| - | 87 * | + | 87* |
| - | 88 * @param bool $prependTOC | + | 88* @param |
| - | 89 * @return bool true if any output | + | 89* @return |
| - | 90 * | + | 90* |
| - | 91 * @triggers TPL_ACT_RENDER | + | 91* @triggers TPL_ACT_RENDER |
| - | 92 * @triggers TPL_CONTENT_DISPLAY | + | 92* @triggers TPL_CONTENT_DISPLAY |
| - | 93 * @author Andreas Gohr < | + | 93* @автор Андреас Гор |
| - | 94 */ | + | 94*/ |
| 95 function tpl_content($prependTOC = true) | 95 function tpl_content($prependTOC = true) | ||
| 96 { | 96 { | ||
| Строка 110: | Строка 110: | ||
| 109 } | 109 } | ||
| 110 | 110 | ||
| - | 111 /** | + | 111/** |
| - | 112 * Default Action of TPL_ACT_RENDER | + | 112* Действие по умолчанию |
| - | 113 * | + | 113* |
| - | 114 * @return bool | + | 114* @return |
| - | 115 */ | + | 115*/ |
| 116 function tpl_content_core() | 116 function tpl_content_core() | ||
| 117 { | 117 { | ||
| Строка 128: | Строка 128: | ||
| 127 } | 127 } | ||
| 128 | 128 | ||
| - | 129 /** | + | 129/** |
| - | 130 * Places the TOC where the function is called | + | 130* Размещает оглавление там, где вызывается функция |
| - | 131 * | + | 131* |
| - | 132 * If you use this you most probably want to call tpl_content | + | 132* Если вы используете это, вы, скорее всего, захотите вызвать |
| - | 133 * a false argument | + | 133* ложный аргумент |
| - | 134 * | + | 134* |
| - | 135 * @param bool $return | + | 135* @param |
| - | 136 * @return string | + | 136* @возвращаемая |
| - | 137 * | + | 137* |
| - | 138 * @author Andreas Gohr < | + | 138* @автор Андреас Гор |
| - | 139 */ | + | 139*/ |
| 140 function tpl_toc($return = false) | 140 function tpl_toc($return = false) | ||
| 141 { | 141 { | ||
| Строка 176: | Строка 176: | ||
| 175 } | 175 } | ||
| 176 | 176 | ||
| - | 177 /** | + | 177/** |
| - | 178 * Handle the admin page contents | + | 178* Обработка содержимого страницы администратора |
| - | 179 * | + | 179* |
| - | 180 * @return bool | + | 180* @return |
| - | 181 * | + | 181* |
| - | 182 * @author Andreas Gohr < | + | 182* @автор Андреас Гор |
| - | 183 */ | + | 183*/ |
| 184 function tpl_admin() | 184 function tpl_admin() | ||
| 185 { | 185 { | ||
| Строка 212: | Строка 212: | ||
| 211 } | 211 } | ||
| 212 | 212 | ||
| - | 213 /** | + | 213/** |
| - | 214 * Print the correct | + | 214* Распечатайте правильные |
| - | 215 * | + | 215* |
| - | 216 * This has to go into the head section of your template. | + | 216* Это необходимо разместить в заголовке вашего шаблона. |
| - | 217 * | + | 217* |
| - | 218 * @param bool $alt Should feeds and alternative format links be added? | + | 218* @param |
| - | 219 * @return bool | + | 219* @return |
| - | 220 * @throws | + | 220* @вызывает |
| - | 221 * | + | 221* |
| - | 222 * @author Andreas Gohr < | + | 222* @автор Андреас Гор |
| - | 223 * @triggers TPL_METAHEADER_OUTPUT | + | 223* @triggers TPL_METAHEADER_OUTPUT |
| - | 224 */ | + | 224*/ |
| 225 function tpl_metaheaders($alt = true) | 225 function tpl_metaheaders($alt = true) | ||
| 226 { | 226 { | ||
| Строка 238: | Строка 238: | ||
| 237 | 237 | ||
| 238 | 238 | ||
| - | 239 | + | 239 // подготавливаем массив головок |
| 240 $head = []; | 240 $head = []; | ||
| 241 | 241 | ||
| - | 242 | + | 242 // подготовить |
| 243 | 243 | ||
| 244 | 244 | ||
| Строка 248: | Строка 248: | ||
| 247 | 247 | ||
| 248 | 248 | ||
| - | 249 | + | 249 // обычные вещи |
| 250 | 250 | ||
| 251 if (actionOK(' | 251 if (actionOK(' | ||
| Строка 336: | Строка 336: | ||
| 335 } | 335 } | ||
| 336 | 336 | ||
| - | 337 | + | 337 // настройка тегов робота, |
| 338 if (($ACT == ' | 338 if (($ACT == ' | ||
| 339 if ($INFO[' | 339 if ($INFO[' | ||
| Строка 359: | Строка 359: | ||
| 358 } | 358 } | ||
| 359 | 359 | ||
| - | 360 | + | 360 // установить метаданные |
| 361 if ($ACT == ' | 361 if ($ACT == ' | ||
| 362 // keywords (explicit or implicit) | 362 // keywords (explicit or implicit) | ||
| Строка 369: | Строка 369: | ||
| 368 } | 368 } | ||
| 369 | 369 | ||
| - | 370 | + | 370 // загрузка таблиц стилей |
| 371 | 371 | ||
| 372 ' | 372 ' | ||
| Строка 384: | Строка 384: | ||
| 383 | 383 | ||
| 384 | 384 | ||
| - | 385 | + | 385 // загрузить |
| 386 | 386 | ||
| 387 | 387 | ||
| Строка 393: | Строка 393: | ||
| 392 } | 392 } | ||
| 393 | 393 | ||
| - | 394 | + | 394 // загружаем наш диспетчер |
| 395 | 395 | ||
| 396 ' | 396 ' | ||
| Строка 399: | Строка 399: | ||
| 398 ] + ($conf[' | 398 ] + ($conf[' | ||
| 399 | 399 | ||
| - | 400 | + | 400 // вызвать событие здесь |
| 401 | 401 | ||
| 402 | 402 | ||
| 403 } | 403 } | ||
| 404 | 404 | ||
| - | 405 /** | + | 405/** |
| - | 406 * prints the array build by tpl_metaheaders | + | 406* печатает массив, |
| - | 407 * | + | 407* |
| - | 408 * $data is an array of different header tags. Each tag can have multiple | + | 408* $data — это массив различных тегов заголовков. Каждый тег может иметь несколько |
| - | 409 * instances. Attributes are given as key value pairs. Values will be HTML | + | 409* экземпляры. Атрибуты задаются как пары ключ-значение. Значения будут |
| - | 410 * encoded automatically so they should be provided as is in the $data array. | + | 410* кодируются автоматически, |
| - | 411 * | + | 411* |
| - | 412 * For tags having a body attribute specify the body data in the special | + | 412* Для тегов, имеющих атрибут |
| - | 413 * attribute | + | 413* атрибут |
| - | 414 * | + | 414* |
| - | 415 * Inline scripts will use any nonce provided in the environment variable ' | + | 415* Встроенные скрипты будут использовать любой одноразовый номер, указанный в переменной среды «NONCE». |
| - | 416 * | + | 416* |
| - | 417 * @param | + | 417* @param |
| - | 418 * | + | 418* |
| - | 419 * @author Andreas Gohr < | + | 419* @автор Андреас Гор |
| - | 420 */ | + | 420*/ |
| 421 function _tpl_metaheaders_action($data) | 421 function _tpl_metaheaders_action($data) | ||
| 422 { | 422 { | ||
| Строка 442: | Строка 442: | ||
| 441 } | 441 } | ||
| 442 | 442 | ||
| - | 443 /** | + | 443/** |
| - | 444 * Output the given script as inline script tag | + | 444* Вывести данный скрипт как встроенный тег скрипта |
| - | 445 * | + | 445* |
| - | 446 * This function will add the nonce attribute if a nonce is available. | + | 446* Эта функция добавит атрибут |
| - | 447 * | + | 447* |
| - | 448 * The script is NOT automatically escaped! | + | 448* Скрипт НЕ экранируется автоматически! |
| - | 449 * | + | 449* |
| - | 450 * @param string $script | + | 450* @param |
| - | 451 * @param bool $return | + | 451* @param |
| - | 452 * @return string|void | + | 452* @return |
| - | 453 */ | + | 453*/ |
| 454 function tpl_inlineScript($script, | 454 function tpl_inlineScript($script, | ||
| 455 { | 455 { | ||
| Строка 466: | Строка 466: | ||
| 465 } | 465 } | ||
| 466 | 466 | ||
| - | 467 /** | + | 467/** |
| - | 468 * Print a link | + | 468* Распечатать ссылку |
| - | 469 * | + | 469* |
| - | 470 * Just builds a link. | + | 470* Просто создает ссылку. |
| - | 471 * | + | 471* |
| - | 472 * @param string $url | + | 472* @param |
| - | 473 * @param string $name | + | 473* @param |
| - | 474 * @param string $more | + | 474* @param |
| - | 475 * @param bool $return | + | 475* @param |
| - | 476 * @return bool|string | + | 476* @return |
| - | 477 * | + | 477* |
| - | 478 * @author Andreas Gohr < | + | 478* @автор Андреас Гор |
| - | 479 */ | + | 479*/ |
| 480 function tpl_link($url, | 480 function tpl_link($url, | ||
| 481 { | 481 { | ||
| Строка 489: | Строка 489: | ||
| 488 } | 488 } | ||
| 489 | 489 | ||
| - | 490 /** | + | 490/** |
| - | 491 * Prints a link to a WikiPage | + | 491* Печатает ссылку на WikiPage |
| - | 492 * | + | 492* |
| - | 493 * Wrapper around | + | 493* Обертка вокруг |
| - | 494 * | + | 494* |
| - | 495 * @param string $id page id | + | 495* @param |
| - | 496 * @param string|null $name the name of the link | + | 496* @param |
| - | 497 * @param bool $return | + | 497* @param |
| - | 498 * @return true|string | + | 498* @return |
| - | 499 * | + | 499* |
| - | 500 * @author Andreas Gohr < | + | 500* @автор Андреас Гор |
| - | 501 */ | + | 501*/ |
| 502 function tpl_pagelink($id, | 502 function tpl_pagelink($id, | ||
| 503 { | 503 { | ||
| Строка 509: | Строка 509: | ||
| 508 } | 508 } | ||
| 509 | 509 | ||
| - | 510 /** | + | 510/** |
| - | 511 * get the parent page | + | 511* получить родительскую страницу |
| - | 512 * | + | 512* |
| - | 513 * Tries to find out which page is parent. | + | 513* Пытается выяснить, |
| - | 514 * returns | + | 514* возвращает |
| - | 515 * | + | 515* |
| - | 516 * @param string $id page id | + | 516* @param |
| - | 517 * @return false|string | + | 517* @return |
| - | 518 * | + | 518* |
| - | 519 * @author Andreas Gohr < | + | 519* @автор Андреас Гор |
| - | 520 */ | + | 520*/ |
| 521 function tpl_getparent($id) | 521 function tpl_getparent($id) | ||
| 522 { | 522 { | ||
| Строка 535: | Строка 535: | ||
| 534 } | 534 } | ||
| 535 | 535 | ||
| - | 536 /** | + | 536/** |
| - | 537 * Print one of the buttons | + | 537* Распечатать одну из кнопок |
| - | 538 * | + | 538* |
| - | 539 * @param string $type | + | 539* @param |
| - | 540 * @param bool $return | + | 540* @param |
| - | 541 * @return bool|string html, or false if no data, true if printed | + | 541* @return |
| - | 542 * @see tpl_get_action | + | 542* @see |
| - | 543 * | + | 543* |
| - | 544 * @author Adrian Lang < | + | 544* @автор Адриан Лэнг |
| - | 545 * @deprecated 2017-09-01 | + | 545* @deprecated 2017-09-01 |
| - | 546 */ | + | 546*/ |
| 547 function tpl_button($type, | 547 function tpl_button($type, | ||
| 548 { | 548 { | ||
| Строка 573: | Строка 573: | ||
| 572 } | 572 } | ||
| 573 | 573 | ||
| - | 574 /** | + | 574/** |
| - | 575 * Like the action buttons but links | + | 575* Как кнопки действий, |
| - | 576 * | + | 576* |
| - | 577 * @param string $type action command | + | 577* @param |
| - | 578 * @param string $pre prefix of link | + | 578* @param |
| - | 579 * @param string $suf suffix of link | + | 579* @param |
| - | 580 * @param string $inner innerHML | + | 580* @param |
| - | 581 * @param bool $return | + | 581* @param |
| - | 582 * @return bool|string html or false if no data, true if printed | + | 582* @return |
| - | 583 * | + | 583* |
| - | 584 * @see tpl_get_action | + | 584* @see |
| - | 585 * @author Adrian Lang < | + | 585* @автор Адриан Лэнг |
| - | 586 * @deprecated 2017-09-01 | + | 586* @deprecated 2017-09-01 |
| - | 587 */ | + | 587*/ |
| 588 function tpl_actionlink($type, | 588 function tpl_actionlink($type, | ||
| 589 { | 589 { | ||
| Строка 636: | Строка 636: | ||
| 635 } | 635 } | ||
| 636 | 636 | ||
| - | 637 /** | + | 637/** |
| - | 638 * Check the actions and get data for buttons and links | + | 638* Проверьте действия и получите данные для кнопок и ссылок |
| - | 639 * | + | 639* |
| - | 640 * @param string $type | + | 640* @param |
| - | 641 * @return | + | 641* @return |
| - | 642 * | + | 642* |
| - | 643 * @author Adrian Lang < | + | 643* @автор Адриан Лэнг |
| - | 644 * @author Andreas Gohr < | + | 644* @автор Андреас Гор |
| - | 645 * @author Matthias Grimm < | + | 645* @автор Маттиас Гримм |
| - | 646 * @deprecated 2017-09-01 | + | 646* @deprecated 2017-09-01 |
| - | 647 */ | + | 647*/ |
| 648 function tpl_get_action($type) | 648 function tpl_get_action($type) | ||
| 649 { | 649 { | ||
| Строка 691: | Строка 691: | ||
| 690 } | 690 } | ||
| 691 | 691 | ||
| - | 692 /** | + | 692/** |
| - | 693 * Wrapper around | + | 693* Обертка вокруг |
| - | 694 * | + | 694* |
| - | 695 * @param string $type action command | + | 695* @param |
| - | 696 * @param bool $link link or form button? | + | 696* @param |
| - | 697 * @param string|bool $wrapper HTML element wrapper | + | 697* @param |
| - | 698 * @param bool $return return | + | 698* @param |
| - | 699 * @param string $pre prefix for links | + | 699* @param |
| - | 700 * @param string $suf suffix for links | + | 700* @param |
| - | 701 * @param string $inner inner HTML for links | + | 701* @param |
| - | 702 * @return bool|string | + | 702* @return |
| - | 703 * | + | 703* |
| - | 704 * @author Anika Henke < | + | 704* @автор Аника Хенке |
| - | 705 * @deprecated 2017-09-01 | + | 705* @deprecated 2017-09-01 |
| - | 706 */ | + | 706*/ |
| 707 function tpl_action($type, | 707 function tpl_action($type, | ||
| 708 { | 708 { | ||
| Строка 722: | Строка 722: | ||
| 721 } | 721 } | ||
| 722 | 722 | ||
| - | 723 /** | + | 723/** |
| - | 724 * Print the search form | + | 724* Распечатать форму поиска |
| - | 725 * | + | 725* |
| - | 726 * If the first parameter is given a div with the ID ' | + | 726* Если первый параметр задан как |
| - | 727 * be added which instructs the ajax pagequicksearch to kick in and place | + | 727* добавляется, |
| - | 728 * its output into this div. The second parameter controls the propritary | + | 728* его вывод в этот |
| - | 729 * attribute autocomplete. If set to false this attribute will be set with an | + | 729* атрибут автозаполнения. Если установлено значение |
| - | 730 * value of " | + | 730* значение |
| - | 731 * autocompletion feature | + | 731* функция автодополнения |
| - | 732 * | + | 732* |
| - | 733 * @param bool $ajax | + | 733* @param |
| - | 734 * @param bool $autocomplete | + | 734* @param |
| - | 735 * @return bool | + | 735* @return |
| - | 736 * | + | 736* |
| - | 737 * @author Andreas Gohr < | + | 737* @автор Андреас Гор |
| - | 738 */ | + | 738*/ |
| 739 function tpl_searchform($ajax = true, $autocomplete = true) | 739 function tpl_searchform($ajax = true, $autocomplete = true) | ||
| 740 { | 740 { | ||
| Строка 784: | Строка 784: | ||
| 783 } | 783 } | ||
| 784 | 784 | ||
| - | 785 /** | + | 785/** |
| - | 786 * Print the breadcrumbs trace | + | 786* Распечатать след навигационной цепочки |
| - | 787 * | + | 787* |
| - | 788 * @param string $sep Separator between entries | + | 788* @param |
| - | 789 * @param bool $return return | + | 789* @param |
| - | 790 * @return bool|string | + | 790* @return |
| - | 791 * | + | 791* |
| - | 792 * @author Andreas Gohr < | + | 792* @автор Андреас Гор |
| - | 793 */ | + | 793*/ |
| 794 function tpl_breadcrumbs($sep = null, $return = false) | 794 function tpl_breadcrumbs($sep = null, $return = false) | ||
| 795 { | 795 { | ||
| Строка 826: | Строка 826: | ||
| 825 } | 825 } | ||
| 826 | 826 | ||
| - | 827 /** | + | 827/** |
| - | 828 * Hierarchical breadcrumbs | + | 828* Иерархическая навигационная цепочка |
| - | 829 * | + | 829* |
| - | 830 * This code was suggested as replacement for the usual breadcrumbs. | + | 830* Этот код был предложен в качестве замены обычным хлебным крошкам. |
| - | 831 * It only makes sense with a deep site structure. | + | 831* Имеет смысл только при наличии глубокой структуры сайта. |
| - | 832 * | + | 832* |
| - | 833 * @param string $sep Separator between entries | + | 833* @param |
| - | 834 * @param bool $return return | + | 834* @param |
| - | 835 * @return bool|string | + | 835* @return |
| - | 836 * | + | 836* |
| - | 837 * @todo May behave strangely in RTL languages | + | 837* @todo |
| - | 838 * @author | + | 838* @автор |
| - | 839 * @author Andreas Gohr < | + | 839* @автор Андреас Гор |
| - | 840 * @author Nigel McNie < | + | 840* @автор Найджел Макни |
| - | 841 * @author Sean Coates | + | 841* @автор Шон Коутс |
| - | 842 */ | + | 842*/ |
| 843 function tpl_youarehere($sep = null, $return = false) | 843 function tpl_youarehere($sep = null, $return = false) | ||
| 844 { | 844 { | ||
| Строка 897: | Строка 897: | ||
| 896 } | 896 } | ||
| 897 | 897 | ||
| - | 898 /** | + | 898/** |
| - | 899 * Print info if the user is logged in | + | 899* Распечатать информацию, |
| - | 900 * and show full name in that case | + | 900* и в этом случае показывать полное имя |
| - | 901 * | + | 901* |
| - | 902 * Could be enhanced with a profile link in future? | + | 902* Можно ли в будущем добавить ссылку на профиль? |
| - | 903 * | + | 903* |
| - | 904 * @return bool | + | 904* @return |
| - | 905 * | + | 905* |
| - | 906 * @author Andreas Gohr < | + | 906* @автор Андреас Гор |
| - | 907 */ | + | 907*/ |
| 908 function tpl_userinfo() | 908 function tpl_userinfo() | ||
| 909 { | 909 { | ||
| Строка 920: | Строка 920: | ||
| 919 } | 919 } | ||
| 920 | 920 | ||
| - | 921 /** | + | 921/** |
| - | 922 * Print some info about the current page | + | 922* Распечатать некоторую информацию о текущей странице |
| - | 923 * | + | 923* |
| - | 924 * @param bool $ret return content instead of printing it | + | 924* @param |
| - | 925 * @return bool|string | + | 925* @return |
| - | 926 * | + | 926* |
| - | 927 * @author Andreas Gohr < | + | 927* @автор Андреас Гор |
| - | 928 */ | + | 928*/ |
| 929 function tpl_pageinfo($ret = false) | 929 function tpl_pageinfo($ret = false) | ||
| 930 { | 930 { | ||
| Строка 981: | Строка 981: | ||
| 980 } | 980 } | ||
| 981 | 981 | ||
| - | 982 /** | + | 982/** |
| - | 983 * Prints or returns the name of the given page (current one if none given). | + | 983* Печатает или возвращает имя указанной страницы |
| - | 984 * | + | 984* |
| - | 985 * If useheading is enabled this will use the first headline else | + | 985* Если включено использование заголовка, |
| - | 986 * the given ID is used. | + | 986* используется указанный идентификатор. |
| - | 987 * | + | 987* |
| - | 988 * @param string $id page id | + | 988* @param |
| - | 989 * @param bool $ret return content instead of printing | + | 989* @param |
| - | 990 * @return bool|string | + | 990* @return |
| - | 991 * | + | 991* |
| - | 992 * @author Andreas Gohr < | + | 992* @автор Андреас Гор |
| - | 993 */ | + | 993*/ |
| 994 function tpl_pagetitle($id = null, $ret = false) | 994 function tpl_pagetitle($id = null, $ret = false) | ||
| 995 { | 995 { | ||
| Строка 1061: | Строка 1061: | ||
| 1060 } | 1060 } | ||
| 1061 | 1061 | ||
| - | 1062 /** | + | 1062/** |
| - | 1063 * Returns the requested | + | 1063* Возвращает запрошенный тег |
| - | 1064 * | + | 1064* |
| - | 1065 * If $tags is an array all given tags are tried until a | + | 1065* Если |
| - | 1066 * value is found. If no value is found $alt is returned. | + | 1066* значение найдено. Если значение не найдено, |
| - | 1067 * | + | 1067* |
| - | 1068 * Which texts are known is defined in the functions | + | 1068* Какие тексты известны, |
| - | 1069 * and _iptcTagNames() | + | 1069* и _iptcTagNames() |
| - | 1070 * to the names of the latter one) | + | 1070* к именам последнего) |
| - | 1071 * | + | 1071* |
| - | 1072 * Only allowed in: detail.php | + | 1072* Разрешено только в: detail.php |
| - | 1073 * | + | 1073* |
| - | 1074 * @param array|string $tags tag or array of tags to try | + | 1074* @param |
| - | 1075 * @param string $alt alternative output if no data was found | + | 1075* @param |
| - | 1076 * @param null|string $src the image src, uses global | + | 1076* @param |
| - | 1077 * @return string | + | 1077* @возвращаемая |
| - | 1078 * | + | 1078* |
| - | 1079 * @author Andreas Gohr < | + | 1079* @автор Андреас Гор |
| - | 1080 */ | + | 1080*/ |
| 1081 function tpl_img_getTag($tags, | 1081 function tpl_img_getTag($tags, | ||
| 1082 { | 1082 { | ||
| Строка 1098: | Строка 1098: | ||
| 1097 | 1097 | ||
| 1098 | 1098 | ||
| - | 1099 /** | + | 1099/** |
| - | 1100 * Garbage collects up the open JpegMeta | + | 1100* Мусор собирает открытый объект |
| - | 1101 */ | + | 1101*/ |
| 1102 function tpl_img_close() | 1102 function tpl_img_close() | ||
| 1103 { | 1103 { | ||
| Строка 1107: | Строка 1107: | ||
| 1106 } | 1106 } | ||
| 1107 | 1107 | ||
| - | 1108 /** | + | 1108/** |
| - | 1109 * Prints a html description list of the metatags of the current image | + | 1109* Выводит HTML-список описаний метатегов текущего изображения |
| - | 1110 */ | + | 1110*/ |
| 1111 function tpl_img_meta() | 1111 function tpl_img_meta() | ||
| 1112 { | 1112 { | ||
| Строка 1132: | Строка 1132: | ||
| 1131 } | 1131 } | ||
| 1132 | 1132 | ||
| - | 1133 /** | + | 1133/** |
| - | 1134 * Returns metadata as configured in mediameta | + | 1134* Возвращает метаданные, |
| - | 1135 * | + | 1135* |
| - | 1136 * @return | + | 1136* @return |
| - | 1137 * | + | 1137* - строка |
| - | 1138 * | + | 1138* - строковый тип значения |
| - | 1139 * | + | 1139* - строковое значение тега |
| - | 1140 */ | + | 1140*/ |
| 1141 function tpl_get_img_meta() | 1141 function tpl_get_img_meta() | ||
| 1142 { | 1142 { | ||
| Строка 1166: | Строка 1166: | ||
| 1165 } | 1165 } | ||
| 1166 | 1166 | ||
| - | 1167 /** | + | 1167/** |
| - | 1168 * Prints the image with a link to the full sized version | + | 1168* Печатает изображение со ссылкой на полноразмерную версию |
| - | 1169 * | + | 1169* |
| - | 1170 * Only allowed in: detail.php | + | 1170* Разрешено только в: detail.php |
| - | 1171 * | + | 1171* |
| - | 1172 * @triggers TPL_IMG_DISPLAY | + | 1172* @triggers TPL_IMG_DISPLAY |
| - | 1173 * @param int $maxwidth - maximal width of the image | + | 1173* @param |
| - | 1174 * @param int $maxheight - maximal height of the image | + | 1174* @param |
| - | 1175 * @param bool $link - link to the orginal size? | + | 1175* @param |
| - | 1176 * @param array $params - additional image attributes | + | 1176* @param |
| - | 1177 * @return bool Result of TPL_IMG_DISPLAY | + | 1177* @return |
| - | 1178 */ | + | 1178*/ |
| 1179 function tpl_img($maxwidth = 0, $maxheight = 0, $link = true, $params = null) | 1179 function tpl_img($maxwidth = 0, $maxheight = 0, $link = true, $params = null) | ||
| 1180 { | 1180 { | ||
| Строка 1187: | Строка 1187: | ||
| 1186 $h = (int)tpl_img_getTag(' | 1186 $h = (int)tpl_img_getTag(' | ||
| 1187 | 1187 | ||
| - | 1188 | + | 1188 //изменить размер до указанных максимальных значений |
| 1189 | 1189 | ||
| 1190 if ($w >= $h) { | 1190 if ($w >= $h) { | ||
| Строка 1205: | Строка 1205: | ||
| 1204 } | 1204 } | ||
| 1205 | 1205 | ||
| - | 1206 | + | 1206 //подготовить URL-адреса |
| 1207 $url = ml($IMG, [' | 1207 $url = ml($IMG, [' | ||
| 1208 $src = ml($IMG, [' | 1208 $src = ml($IMG, [' | ||
| 1209 | 1209 | ||
| - | 1210 | + | 1210 //подготовить атрибуты |
| 1211 $alt = tpl_img_getTag(' | 1211 $alt = tpl_img_getTag(' | ||
| 1212 if (is_null($params)) { | 1212 if (is_null($params)) { | ||
| Строка 1231: | Строка 1231: | ||
| 1230 } | 1230 } | ||
| 1231 | 1231 | ||
| - | 1232 /** | + | 1232/** |
| - | 1233 * Default action for TPL_IMG_DISPLAY | + | 1233* Действие по умолчанию для |
| - | 1234 * | + | 1234* |
| - | 1235 * @param | + | 1235* @param |
| - | 1236 * @return bool | + | 1236* @return |
| - | 1237 */ | + | 1237*/ |
| 1238 function _tpl_img_action($data) | 1238 function _tpl_img_action($data) | ||
| 1239 { | 1239 { | ||
| Строка 1248: | Строка 1248: | ||
| 1247 } | 1247 } | ||
| 1248 | 1248 | ||
| - | 1249 /** | + | 1249/** |
| - | 1250 * This function inserts a small gif which in reality is the indexer function. | + | 1250* Эта функция вставляет небольшой |
| - | 1251 * | + | 1251* |
| - | 1252 * Should be called somewhere at the very end of the main.php | + | 1252* Должен вызываться где-то в самом конце шаблона |
| - | 1253 * | + | 1253* |
| - | 1254 * @return bool | + | 1254* @return |
| - | 1255 */ | + | 1255*/ |
| 1256 function tpl_indexerWebBug() | 1256 function tpl_indexerWebBug() | ||
| 1257 { | 1257 { | ||
| Строка 1270: | Строка 1270: | ||
| 1269 } | 1269 } | ||
| 1270 | 1270 | ||
| - | 1271 /** | + | 1271/** |
| - | 1272 * tpl_getConf($id) | + | 1272* tpl_getConf($id) |
| - | 1273 * | + | 1273* |
| - | 1274 * use this function to access template configuration variables | + | 1274* используйте эту функцию для доступа к переменным конфигурации шаблона |
| - | 1275 * | + | 1275* |
| - | 1276 * @param string $id name of the value to access | + | 1276* @param |
| - | 1277 * @param mixed $notset | + | 1277* @param |
| - | 1278 * @return | + | 1278* @return |
| - | 1279 */ | + | 1279*/ |
| 1280 function tpl_getConf($id, | 1280 function tpl_getConf($id, | ||
| 1281 { | 1281 { | ||
| Строка 1300: | Строка 1300: | ||
| 1299 } | 1299 } | ||
| 1300 | 1300 | ||
| - | 1301 /** | + | 1301/** |
| - | 1302 * tpl_loadConfig() | + | 1302* tpl_loadConfig() |
| - | 1303 * | + | 1303* |
| - | 1304 * reads all template configuration variables | + | 1304* считывает все переменные конфигурации шаблона |
| - | 1305 * this function is automatically called by tpl_getConf() | + | 1305* эта функция автоматически вызывается |
| - | 1306 * | + | 1306* |
| - | 1307 * @return false|array | + | 1307* @return |
| - | 1308 */ | + | 1308*/ |
| 1309 function tpl_loadConfig() | 1309 function tpl_loadConfig() | ||
| 1310 { | 1310 { | ||
| Строка 1316: | Строка 1316: | ||
| 1315 if (!file_exists($file)) return false; | 1315 if (!file_exists($file)) return false; | ||
| 1316 | 1316 | ||
| - | 1317 | + | 1317 // загрузить файл конфигурации по умолчанию |
| 1318 | 1318 | ||
| 1319 | 1319 | ||
| Строка 1322: | Строка 1322: | ||
| 1321 } | 1321 } | ||
| 1322 | 1322 | ||
| - | 1323 // language methods | + | 1323// |
| 1324 | 1324 | ||
| - | 1325 /** | + | 1323// методы языка |
| - | 1326 * tpl_getLang($id) | + | 1324 |
| - | 1327 * | + | 1325/** |
| - | 1328 * use this function to access template language variables | + | 1326* tpl_getLang($id) |
| - | 1329 * | + | 1327* |
| - | 1330 * @param string $id key of language string | + | 1328* используйте эту функцию для доступа к переменным языка шаблона |
| - | 1331 * @return string | + | 1329* |
| - | 1332 */ | + | 1330* @param |
| + | 1331* @возвращаемая | ||
| + | 1332*/ | ||
| 1333 function tpl_getLang($id) | 1333 function tpl_getLang($id) | ||
| 1334 { | 1334 { | ||
| Строка 1343: | Строка 1345: | ||
| 1342 $lang = []; | 1342 $lang = []; | ||
| 1343 | 1343 | ||
| - | 1344 | + | 1344 // не включайте один раз |
| 1345 | 1345 | ||
| 1346 | 1346 | ||
| Строка 1363: | Строка 1365: | ||
| 1362 } | 1362 } | ||
| 1363 | 1363 | ||
| - | 1364 /** | + | 1364/** |
| - | 1365 * Retrieve a language dependent file and pass to xhtml renderer for display | + | 1365* Извлечь файл, зависящий от языка, и передать его в xhtml-рендерер для отображения |
| - | 1366 * template equivalent of p_locale_xhtml() | + | 1366* эквивалент шаблона |
| - | 1367 * | + | 1367* |
| - | 1368 * @param string $id id of language dependent wiki page | + | 1368* @param |
| - | 1369 * @return | + | 1369* @return |
| - | 1370 */ | + | 1370*/ |
| 1371 function tpl_locale_xhtml($id) | 1371 function tpl_locale_xhtml($id) | ||
| 1372 { | 1372 { | ||
| Строка 1375: | Строка 1377: | ||
| 1374 } | 1374 } | ||
| 1375 | 1375 | ||
| - | 1376 /** | + | 1376/** |
| - | 1377 * Prepends appropriate path for a language dependent filename | + | 1377* Добавляет соответствующий путь к имени файла, зависящему от языка |
| - | 1378 * | + | 1378* |
| - | 1379 * @param string $id id of localized text | + | 1379* @param |
| - | 1380 * @return string | + | 1380* @return |
| - | 1381 */ | + | 1381*/ |
| 1382 function tpl_localeFN($id) | 1382 function tpl_localeFN($id) | ||
| 1383 { | 1383 { | ||
| Строка 1396: | Строка 1398: | ||
| 1395 } | 1395 } | ||
| 1396 | 1396 | ||
| - | 1397 /** | + | 1397/** |
| - | 1398 * prints the "main content" | + | 1398* выводит «основной контент» во всплывающем окне медиаменеджера |
| - | 1399 * | + | 1399* |
| - | 1400 * Depending on the user's actions this may be a list of | + | 1400* В зависимости от действий пользователя это может быть список |
| - | 1401 * files in a namespace, the meta editing dialog or | + | 1401* файлы в пространстве имен, диалоговое окно редактирования метаданных или |
| - | 1402 * a message of referencing pages | + | 1402* сообщение о ссылках на страницы |
| - | 1403 * | + | 1403* |
| - | 1404 * Only allowed in mediamanager.php | + | 1404* Разрешено только в mediamanager.php |
| - | 1405 * | + | 1405* |
| - | 1406 * @triggers | + | 1406* @triggers |
| - | 1407 * @param bool $fromajax - set true when calling this function via ajax | + | 1407* @param |
| - | 1408 * @param string $sort | + | 1408* @param |
| - | 1409 * | + | 1409* |
| - | 1410 * @author Andreas Gohr < | + | 1410* @автор Андреас Гор |
| - | 1411 */ | + | 1411*/ |
| 1412 function tpl_mediaContent($fromajax = false, $sort = ' | 1412 function tpl_mediaContent($fromajax = false, $sort = ' | ||
| 1413 { | 1413 { | ||
| Строка 1434: | Строка 1436: | ||
| 1433 } | 1433 } | ||
| 1434 | 1434 | ||
| - | 1435 | + | 1435 // выводим панель содержимого, обернутую в событие. |
| 1436 if (!$fromajax) echo '< | 1436 if (!$fromajax) echo '< | ||
| 1437 $data = [' | 1437 $data = [' | ||
| Строка 1455: | Строка 1457: | ||
| 1454 } | 1454 } | ||
| 1455 | 1455 | ||
| - | 1456 /** | + | 1456/** |
| - | 1457 * Prints the central column in full-screen media manager | + | 1457* Печатает центральный столбец в полноэкранном медиа-менеджере |
| - | 1458 * Depending on the opened tab this may be a list of | + | 1458* В зависимости от открытой вкладки это может быть список |
| - | 1459 * files in a namespace, upload form or search form | + | 1459* файлы в пространстве имен, форма загрузки или форма поиска |
| - | 1460 * | + | 1460* |
| - | 1461 * @author | + | 1461* @author |
| - | 1462 */ | + | 1462*/ |
| 1463 function tpl_mediaFileList() | 1463 function tpl_mediaFileList() | ||
| 1464 { | 1464 { | ||
| Строка 1500: | Строка 1502: | ||
| 1499 } | 1499 } | ||
| 1500 | 1500 | ||
| - | 1501 /** | + | 1501/** |
| - | 1502 * Prints the third column in full-screen media manager | + | 1502* Печатает третий столбец в полноэкранном медиа-менеджере |
| - | 1503 * Depending on the opened tab this may be details of the | + | 1503* В зависимости от открытой вкладки это могут быть сведения о |
| - | 1504 * selected file, the meta editing dialog or | + | 1504* выбранный файл, диалоговое окно редактирования метаданных или |
| - | 1505 * list of file revisions | + | 1505* список ревизий файлов |
| - | 1506 * | + | 1506* |
| - | 1507 * @param string $image | + | 1507* @param |
| - | 1508 * @param boolean $rev | + | 1508* @param |
| - | 1509 * | + | 1509* |
| - | 1510 * @author | + | 1510* @author |
| - | 1511 */ | + | 1511*/ |
| 1512 function tpl_mediaFileDetails($image, | 1512 function tpl_mediaFileDetails($image, | ||
| 1513 { | 1513 { | ||
| Строка 1578: | Строка 1580: | ||
| 1577 } | 1577 } | ||
| 1578 | 1578 | ||
| - | 1579 /** | + | 1579/** |
| - | 1580 * prints the namespace tree in the mediamanager popup | + | 1580* выводит дерево пространства имен во всплывающем окне медиаменеджера |
| - | 1581 * | + | 1581* |
| - | 1582 * Only allowed in mediamanager.php | + | 1582* Разрешено только в mediamanager.php |
| - | 1583 * | + | 1583* |
| - | 1584 * @author Andreas Gohr < | + | 1584* @автор Андреас Гор |
| - | 1585 */ | + | 1585*/ |
| 1586 function tpl_mediaTree() | 1586 function tpl_mediaTree() | ||
| 1587 { | 1587 { | ||
| Строка 1593: | Строка 1595: | ||
| 1592 } | 1592 } | ||
| 1593 | 1593 | ||
| - | 1594 /** | + | 1594/** |
| - | 1595 * Print a dropdown menu with all DokuWiki | + | 1595* Распечатать выпадающее меню со всеми действиями |
| - | 1596 * | + | 1596* |
| - | 1597 * Note: this will not use any pretty URLs | + | 1597* Примечание: здесь не будут использоваться красивые URL-адреса. |
| - | 1598 * | + | 1598* |
| - | 1599 * @param string $empty empty option label | + | 1599* @param |
| - | 1600 * @param string $button submit button label | + | 1600* @param |
| - | 1601 * | + | 1601* |
| - | 1602 * @author Andreas Gohr < | + | 1602* @автор Андреас Гор |
| - | 1603 * @deprecated 2017-09-01 | + | 1603* @deprecated 2017-09-01 |
| - | 1604 */ | + | 1604*/ |
| 1605 function tpl_actiondropdown($empty = '', | 1605 function tpl_actiondropdown($empty = '', | ||
| 1606 { | 1606 { | ||
| Строка 1611: | Строка 1613: | ||
| 1610 } | 1610 } | ||
| 1611 | 1611 | ||
| - | 1612 /** | + | 1612/** |
| - | 1613 * Print a informational line about the used license | + | 1613* Распечатать информационную строку об использованной лицензии |
| - | 1614 * | + | 1614* |
| - | 1615 * @param string $img print image? (|button|badge) | + | 1615* @param |
| - | 1616 * @param bool $imgonly | + | 1616* @param |
| - | 1617 * @param bool $return | + | 1617* @param |
| - | 1618 * @param bool $wrap wrap in div with class=" | + | 1618* @param |
| - | 1619 * @return string | + | 1619* @возвращаемая |
| - | 1620 * | + | 1620* |
| - | 1621 * @author Andreas Gohr < | + | 1621* @автор Андреас Гор |
| - | 1622 */ | + | 1622*/ |
| 1623 function tpl_license($img = ' | 1623 function tpl_license($img = ' | ||
| 1624 { | 1624 { | ||
| Строка 1654: | Строка 1656: | ||
| 1653 } | 1653 } | ||
| 1654 | 1654 | ||
| - | 1655 /** | + | 1655/** |
| - | 1656 * Includes the rendered | + | 1656* Включает визуализированный |
| - | 1657 * | + | 1657* |
| - | 1658 * This function is useful to populate sidebars or similar features in a | + | 1658* Эта функция полезна для заполнения боковых панелей или подобных функций в |
| - | 1659 * template | + | 1659* шаблон |
| - | 1660 * | + | 1660* |
| - | 1661 * @param string $pageid | + | 1661* @param |
| - | 1662 * @param bool $print | + | 1662* @param |
| - | 1663 * @param bool $propagate | + | 1663* @param |
| - | 1664 * @param bool $useacl | + | 1664* @param |
| - | 1665 * @return bool|null|string | + | 1665* @return |
| - | 1666 */ | + | 1666*/ |
| 1667 function tpl_include_page($pageid, | 1667 function tpl_include_page($pageid, | ||
| 1668 { | 1668 { | ||
| Строка 1684: | Строка 1686: | ||
| 1683 } | 1683 } | ||
| 1684 | 1684 | ||
| - | 1685 /** | + | 1685/** |
| - | 1686 * Display the subscribe form | + | 1686* Отобразить форму подписки |
| - | 1687 * | + | 1687* |
| - | 1688 * @author Adrian Lang < | + | 1688* @автор Адриан Лэнг |
| - | 1689 * @deprecated | + | 1689* @устаревший |
| - | 1690 */ | + | 1690*/ |
| 1691 function tpl_subscribe() | 1691 function tpl_subscribe() | ||
| 1692 { | 1692 { | ||
| Строка 1696: | Строка 1698: | ||
| 1695 } | 1695 } | ||
| 1696 | 1696 | ||
| - | 1697 /** | + | 1697/** |
| - | 1698 * Tries to send already created content right to the browser | + | 1698* Пытается отправить уже созданный контент прямо в браузер |
| - | 1699 * | + | 1699* |
| - | 1700 * Wraps around | + | 1700* Оборачивает |
| - | 1701 * | + | 1701* |
| - | 1702 * @author Andreas Gohr < | + | 1702* @автор Андреас Гор |
| - | 1703 */ | + | 1703*/ |
| 1704 function tpl_flush() | 1704 function tpl_flush() | ||
| 1705 { | 1705 { | ||
| Строка 1709: | Строка 1711: | ||
| 1708 } | 1708 } | ||
| 1709 | 1709 | ||
| - | 1710 /** | + | 1710/** |
| - | 1711 * Tries to find a ressource file in the given locations. | + | 1711* Пытается найти файл ресурсов в указанных местах. |
| - | 1712 * | + | 1712* |
| - | 1713 * If a given location starts with a colon it is assumed to be a media | + | 1713* Если указанное местоположение начинается с двоеточия, |
| - | 1714 * file, otherwise it is assumed to be relative to the current template | + | 1714* файл, в противном случае предполагается, |
| - | 1715 * | + | 1715* |
| - | 1716 * @param string[] $search locations to look at | + | 1716* @параметр |
| - | 1717 * @param bool $abs if to use absolute | + | 1717* @param |
| - | 1718 * @param | + | 1718* @param |
| - | 1719 * @param bool $fallback | + | 1719* @param |
| - | 1720 * false result is required | + | 1720* требуется ложный результат |
| - | 1721 * @return string | + | 1721* @возвращаемая |
| - | 1722 * | + | 1722* |
| - | 1723 * @author Andreas | + | 1723* @автор Андреас Гор |
| - | 1724 */ | + | 1724*/ |
| 1725 function tpl_getMediaFile($search, | 1725 function tpl_getMediaFile($search, | ||
| 1726 { | 1726 { | ||
| Строка 1729: | Строка 1731: | ||
| 1728 $file = ''; | 1728 $file = ''; | ||
| 1729 | 1729 | ||
| - | 1730 | + | 1730 // перебираем кандидатов, |
| 1731 | 1731 | ||
| 1732 if (str_starts_with($img, | 1732 if (str_starts_with($img, | ||
| Строка 1742: | Строка 1744: | ||
| 1741 } | 1741 } | ||
| 1742 | 1742 | ||
| - | 1743 | + | 1743 // управлять несуществующей целью |
| 1744 if (!file_exists($file)) { | 1744 if (!file_exists($file)) { | ||
| - | 1745 | + | 1745 // дать результат для резервного изображения |
| 1746 if ($fallback) { | 1746 if ($fallback) { | ||
| 1747 $file = DOKU_INC . ' | 1747 $file = DOKU_INC . ' | ||
| - | 1748 | + | 1748 // остановить процесс, |
| 1749 } else { | 1749 } else { | ||
| 1750 | 1750 | ||
| Строка 1753: | Строка 1755: | ||
| 1752 } | 1752 } | ||
| 1753 | 1753 | ||
| - | 1754 | + | 1754 // извлечь данные изображения, |
| 1755 if (!is_null($imginfo)) { | 1755 if (!is_null($imginfo)) { | ||
| 1756 | 1756 | ||
| 1757 } | 1757 } | ||
| 1758 | 1758 | ||
| - | 1759 | + | 1759 // создать |
| 1760 if ($ismedia) { | 1760 if ($ismedia) { | ||
| 1761 $url = ml($img, '', | 1761 $url = ml($img, '', | ||
| Строка 1769: | Строка 1771: | ||
| 1768 } | 1768 } | ||
| 1769 | 1769 | ||
| - | 1770 /** | + | 1770/** |
| - | 1771 * PHP include a file | + | 1771* PHP включает файл |
| - | 1772 * | + | 1772* |
| - | 1773 * either from the conf directory if it exists, otherwise use | + | 1773* либо из каталога |
| - | 1774 * file in the template' | + | 1774* файл в корневом каталоге шаблона. |
| - | 1775 * | + | 1775* |
| - | 1776 * The function honours config cascade settings and looks for the given | + | 1776* Функция учитывает настройки каскада конфигураций и ищет заданные |
| - | 1777 * file next to the ´main´ config files, in the order protected, local, | + | 1777* файл рядом с «основными» файлами конфигурации, в порядке защищенный, локальный, |
| - | 1778 * default. | + | 1778* по умолчанию. |
| - | 1779 * | + | 1779* |
| - | 1780 * Note: no escaping or sanity checking is done here. Never pass user input | + | 1780* Примечание: здесь не выполняется экранирование или проверка на работоспособность. Никогда не передавайте пользовательский ввод |
| - | 1781 * to this function! | + | 1781* к этой функции! |
| - | 1782 * | + | 1782* |
| - | 1783 * @param string $file | + | 1783* @param |
| - | 1784 * | + | 1784* |
| - | 1785 * @author Andreas Gohr < | + | 1785* @автор Андреас Гор |
| - | 1786 * @author Anika Henke < | + | 1786* @автор Аника Хенке |
| - | 1787 */ | + | 1787*/ |
| 1788 function tpl_includeFile($file) | 1788 function tpl_includeFile($file) | ||
| 1789 { | 1789 { | ||
| Строка 1801: | Строка 1803: | ||
| 1800 } | 1800 } | ||
| 1801 | 1801 | ||
| - | 1802 | + | 1802 // все еще здесь? попробуйте шаблон |
| 1803 $file = tpl_incdir() . $file; | 1803 $file = tpl_incdir() . $file; | ||
| 1804 if (file_exists($file)) { | 1804 if (file_exists($file)) { | ||
| Строка 1808: | Строка 1810: | ||
| 1807 } | 1807 } | ||
| 1808 | 1808 | ||
| - | 1809 /** | + | 1809/** |
| - | 1810 * Returns | + | 1810* Возвращает тег |
| - | 1811 * | + | 1811* |
| - | 1812 * @param array $types - list of icon types to display | + | 1812* @param |
| - | 1813 * @return string | + | 1813* @возвращаемая |
| - | 1814 * | + | 1814* |
| - | 1815 * @author Anika Henke < | + | 1815* @автор Аника Хенке |
| - | 1816 */ | + | 1816*/ |
| 1817 function tpl_favicon($types = [' | 1817 function tpl_favicon($types = [' | ||
| 1818 { | 1818 { | ||
| Строка 1842: | Строка 1844: | ||
| 1841 } | 1841 } | ||
| 1842 | 1842 | ||
| - | 1843 /** | + | 1843/** |
| - | 1844 * Prints full-screen media manager | + | 1844* Печать полноэкранного медиа-менеджера |
| - | 1845 * | + | 1845* |
| - | 1846 * @author | + | 1846* @author |
| - | 1847 */ | + | 1847*/ |
| 1848 function tpl_media() | 1848 function tpl_media() | ||
| 1849 { | 1849 { | ||
| Строка 1886: | Строка 1888: | ||
| 1885 } | 1885 } | ||
| 1886 | 1886 | ||
| - | 1887 /** | + | 1887/** |
| - | 1888 * Return useful layout classes | + | 1888* Возвращаем полезные классы макета |
| - | 1889 * | + | 1889* |
| - | 1890 * @return string | + | 1890* @возвращаемая |
| - | 1891 * | + | 1891* |
| - | 1892 * @author Anika Henke < | + | 1892* @автор Аника Хенке |
| - | 1893 */ | + | 1893*/ |
| 1894 function tpl_classes() | 1894 function tpl_classes() | ||
| 1895 { | 1895 { | ||
| Строка 1910: | Строка 1912: | ||
| 1909 } | 1909 } | ||
| 1910 | 1910 | ||
| - | 1911 /** | + | 1911/** |
| - | 1912 * Create event for tools menues | + | 1912* Создать событие для меню инструментов |
| - | 1913 * | + | 1913* |
| - | 1914 * @param string $toolsname | + | 1914* @param |
| - | 1915 * @param | + | 1915* @param |
| - | 1916 * @param string $view e.g. ' | + | 1916* @param |
| - | 1917 * | + | 1917* |
| - | 1918 * @author Anika Henke < | + | 1918* @автор Аника Хенке |
| - | 1919 * @deprecated 2017-09-01 | + | 1919* @deprecated 2017-09-01 |
| - | 1920 */ | + | 1920*/ |
| 1921 function tpl_toolsevent($toolsname, | 1921 function tpl_toolsevent($toolsname, | ||
| 1922 { | 1922 { | ||
| Строка 1934: | Строка 1936: | ||
| 1933 | 1933 | ||
| </ | </ | ||
| + | |||
| + | < | ||
| + | < | ||
| + | <code php> | ||
| + | 1<?php | ||
| + | 2 | ||
| + | 3/** | ||
| + | 4* Функции шаблонов DokuWiki | ||
| + | 5* | ||
| + | 6* @license | ||
| + | 7* @автор | ||
| + | 8*/ | ||
| + | 9 | ||
| + | 10использовать | ||
| + | 11используйте | ||
| + | 12использовать | ||
| + | 13используйте | ||
| + | 14использовать | ||
| + | 15использовать | ||
| + | 16использовать | ||
| + | 17используйте | ||
| + | 18используйте | ||
| + | 19используйте | ||
| + | 20использовать | ||
| + | 21используйте | ||
| + | 22 | ||
| + | 23/** | ||
| + | 24* Доступ к файлу шаблона | ||
| + | 25* | ||
| + | 26* Возвращает путь к указанному файлу внутри текущего шаблона, | ||
| + | 27* шаблон по умолчанию, | ||
| + | 28* | ||
| + | 29* @param | ||
| + | 30* @возвращаемая | ||
| + | 31* | ||
| + | 32* @автор Андреас Гор < | ||
| + | 33*/ | ||
| + | 34 шаблон функции ($ file ) | ||
| + | 35{ | ||
| + | 36 глобальная $ conf ; | ||
| + | 37 | ||
| + | 38 если (@ is_readable ( DOKU_INC . ' lib / tpl /' . $ conf [ ' | ||
| + | 39 вернуть | ||
| + | 40 | ||
| + | 41 вернуть | ||
| + | 42} | ||
| + | 43 | ||
| + | 44/** | ||
| + | 45* Удобная функция для доступа к каталогу шаблонов из локальной ФС | ||
| + | 46* | ||
| + | 47* Заменяет устаревшую константу DOKU_TPLINC. | ||
| + | 48* | ||
| + | 49* @param | ||
| + | 50* @возвращаемая | ||
| + | 51* | ||
| + | 52* @автор Андреас Гор < | ||
| + | 53*/ | ||
| + | 54функция | ||
| + | 55{ | ||
| + | 56 глобальная $ conf ; | ||
| + | 57 если (!$ tpl ) $ tpl = $ conf [ ' | ||
| + | 58 вернуть | ||
| + | 59} | ||
| + | 60 | ||
| + | 61/** | ||
| + | 62* Удобная функция доступа к каталогу шаблонов из Интернета | ||
| + | 63* | ||
| + | 64* Заменяет устаревшую константу DOKU_TPL | ||
| + | 65* | ||
| + | 66* @param | ||
| + | 67* @возвращаемая | ||
| + | 68* | ||
| + | 69* @автор Андреас Гор < | ||
| + | 70*/ | ||
| + | 71функция | ||
| + | 72{ | ||
| + | 73 глобальная $ conf ; | ||
| + | 74 если (!$ tpl ) $ tpl = $ conf [ ' | ||
| + | 75 вернуть | ||
| + | 76} | ||
| + | 77 | ||
| + | 78/** | ||
| + | 79* Распечатать содержимое | ||
| + | 80* | ||
| + | 81* Эта функция используется для печати всего обычного контента. | ||
| + | 82* (определяется глобальной переменной $ACT) путем вызова соответствующего | ||
| + | 83* выходные функции из html.php | ||
| + | 84* | ||
| + | 85* Все, что не использует основной файл шаблона, | ||
| + | 86* обрабатывается этой функцией. ACL-списки здесь тоже не обрабатываются. | ||
| + | 87* | ||
| + | 88* @param | ||
| + | 89* @return | ||
| + | 90* | ||
| + | 91* @triggers TPL_ACT_RENDER | ||
| + | 92* @triggers TPL_CONTENT_DISPLAY | ||
| + | 93* @автор Андреас Гор < | ||
| + | 94*/ | ||
| + | 95функция | ||
| + | 96{ | ||
| + | 97 глобальный $ ACT ; | ||
| + | 98 глобальная $ ИНФОРМАЦИЯ ; | ||
| + | 99 $ INFO [ ' | ||
| + | 100 | ||
| + | 101 ob_start (); | ||
| + | 102 Событие :: createAndTrigger ( ' | ||
| + | 103 $ html_output = ob_get_clean (); | ||
| + | 104 Событие :: createAndTrigger ( ' | ||
| + | 105 echo $ html_output ; | ||
| + | 106 }); | ||
| + | 107 | ||
| + | 108 возврат ! пусто ($ html_output ); | ||
| + | 109} | ||
| + | 110 | ||
| + | 111/** | ||
| + | 112* Действие по умолчанию TPL_ACT_RENDER | ||
| + | 113* | ||
| + | 114* @return | ||
| + | 115*/ | ||
| + | 116функция | ||
| + | 117{ | ||
| + | 118 $ router = ActionRouter :: getInstance (); | ||
| + | 119 пытаться { | ||
| + | 120 $ маршрутизатор -> getAction ()-> tplContent (); | ||
| + | 121 } поймать ( FatalException $ e ) { | ||
| + | 122 // не было контента для действия | ||
| + | 123 сообщение ( hsc ($ e -> getMessage ()), -1 ); | ||
| + | 124 вернуть | ||
| + | 125 } | ||
| + | 126 вернуть | ||
| + | 127} | ||
| + | 128 | ||
| + | 129/** | ||
| + | 130* Размещает оглавление там, где вызывается функция | ||
| + | 131* | ||
| + | 132* Если вы используете это, вы, скорее всего, захотите вызвать tpl_content с помощью | ||
| + | 133* ложный аргумент | ||
| + | 134* | ||
| + | 135* @param | ||
| + | 136* @возвращаемая | ||
| + | 137* | ||
| + | 138* @автор Андреас Гор < | ||
| + | 139*/ | ||
| + | 140функция | ||
| + | 141{ | ||
| + | 142 глобальный $ TOC ; | ||
| + | 143 глобальный $ ACT ; | ||
| + | 144 глобальный $ ID ; | ||
| + | 145 глобальный $ REV ; | ||
| + | 146 глобальная $ ИНФОРМАЦИЯ ; | ||
| + | 147 глобальная $ conf ; | ||
| + | 148 $ toc = []; | ||
| + | 149 | ||
| + | 150 если ( is_array ($ TOC )) { | ||
| + | 151 // если TOC был подготовлен в глобальном масштабе, | ||
| + | 152 $ toc = $ TOC ; | ||
| + | 153 } elseif (($ ACT == ' | ||
| + | 154 // получить TOC из метаданных, | ||
| + | 155 $ meta = p_get_metadata ($ ID , '' | ||
| + | 156 $ tocok = $ meta [ ' | ||
| + | 157 $ toc = $ meta [ ' | ||
| + | 158 если (!$ tocok || ! is_array ($ toc ) || !$ conf [ ' | ||
| + | 159 $ toc = []; | ||
| + | 160 } | ||
| + | 161 } elseif ($ ACT == ' | ||
| + | 162 // попробуем загрузить оглавление плагина администратора | ||
| + | 163 /** @var AdminPlugin $plugin */ | ||
| + | 164 если ($ plugin = plugin_getRequestAdminPlugin ()) { | ||
| + | 165 $ toc = $ plugin -> getTOC (); | ||
| + | 166 $ TOC = $ toc ; // избежать последующей перестройки | ||
| + | 167 } | ||
| + | 168 } | ||
| + | 169 | ||
| + | 170 Событие :: createAndTrigger ( ' | ||
| + | 171 $ html = html_TOC ($ toc ); | ||
| + | 172 если ($ return ) вернуть $ html ; | ||
| + | 173 эхо $ html ; | ||
| + | 174 возвращаться | ||
| + | 175} | ||
| + | 176 | ||
| + | 177/** | ||
| + | 178* Обработка содержимого страницы администратора | ||
| + | 179* | ||
| + | 180* @return | ||
| + | 181* | ||
| + | 182* @автор Андреас Гор < | ||
| + | 183*/ | ||
| + | 184функция | ||
| + | 185{ | ||
| + | 186 глобальная $ ИНФОРМАЦИЯ ; | ||
| + | 187 глобальный $ TOC ; | ||
| + | 188 глобальный $ ВХОД ; | ||
| + | 189 | ||
| + | 190 $ плагин = null ; | ||
| + | 191 $ класс = $ ВХОД -> стр ( ' | ||
| + | 192 если (! пусто ($ класс )) { | ||
| + | 193 $ pluginlist = plugin_list ( ' | ||
| + | 194 | ||
| + | 195 если ( in_array ($ class , $ pluginlist )) { | ||
| + | 196 // попытка загрузить плагин | ||
| + | 197 /** @var AdminPlugin $plugin */ | ||
| + | 198 $ plugin = plugin_load ( ' | ||
| + | 199 } | ||
| + | 200 } | ||
| + | 201 | ||
| + | 202 если ($ plugin | ||
| + | 203 if (! is_array ($ TOC )) $ TOC = $ plugin -> getTOC (); //если TOC еще не был запрошен | ||
| + | 204 если ($ INFO [ ' | ||
| + | 205 $ плагин -> html (); | ||
| + | 206 } еще { | ||
| + | 207 $ админ = новый | ||
| + | 208 $ админ -> показать (); | ||
| + | 209 } | ||
| + | 210 вернуть | ||
| + | 211} | ||
| + | 212 | ||
| + | 213/** | ||
| + | 214* Распечатайте правильные HTML-мета-заголовки | ||
| + | 215* | ||
| + | 216* Это необходимо разместить в заголовке вашего шаблона. | ||
| + | 217* | ||
| + | 218* @param | ||
| + | 219* @return | ||
| + | 220* @вызывает | ||
| + | 221* | ||
| + | 222* @автор Андреас Гор < | ||
| + | 223* @triggers TPL_METAHEADER_OUTPUT | ||
| + | 224*/ | ||
| + | 225функция | ||
| + | 226{ | ||
| + | 227 глобальный $ ID ; | ||
| + | 228 глобальный $ REV ; | ||
| + | 229 глобальная $ ИНФОРМАЦИЯ ; | ||
| + | 230 глобальный $ JSINFO ; | ||
| + | 231 глобальный $ ACT ; | ||
| + | 232 глобальный $ ЗАПРОС ; | ||
| + | 233 глобальный $ lang ; | ||
| + | 234 глобальная $ conf ; | ||
| + | 235 глобальная $ updateVersion ; | ||
| + | 236 /** @var Вход $INPUT */ | ||
| + | 237 глобальный $ ВХОД ; | ||
| + | 238 | ||
| + | 239 // подготавливаем массив головок | ||
| + | 240 $ голова = []; | ||
| + | 241 | ||
| + | 242 // подготовить seed для js и css | ||
| + | 243 $ tseed = $ updateVersion ; | ||
| + | 244 $ зависит = getConfigFiles ( ' | ||
| + | 245 $ зависит [] = DOKU_CONF . " | ||
| + | 246 foreach ($ зависит | ||
| + | 247 $ tseed = md5 ($ tseed ); | ||
| + | 248 | ||
| + | 249 // обычные вещи | ||
| + | 250 $ head [ ' | ||
| + | 251 если ( действиеOK ( ' | ||
| + | 252 $ head [ ' | ||
| + | 253 ' | ||
| + | 254 ' | ||
| + | 255 ' | ||
| + | 256 ' | ||
| + | 257 ]; | ||
| + | 258 } | ||
| + | 259 | ||
| + | 260 $ head [ ' | ||
| + | 261 если ( действиеOK ( ' | ||
| + | 262 $ head [ ' | ||
| + | 263 ' | ||
| + | 264 ' | ||
| + | 265 ' | ||
| + | 266 ]; | ||
| + | 267 } | ||
| + | 268 | ||
| + | 269 если ( действиеOK ( ' | ||
| + | 270 $ head [ ' | ||
| + | 271 ' | ||
| + | 272 ' | ||
| + | 273 ]; | ||
| + | 274 } | ||
| + | 275 | ||
| + | 276 $ styleUtil = new StyleUtils (); | ||
| + | 277 $ styleIni = $ styleUtil -> cssStyleini (); | ||
| + | 278 $ replacements = $ styleIni [ ' | ||
| + | 279 если (! пусто ($ replacements [ ' | ||
| + | 280 $ голова [ ' | ||
| + | 281 ' | ||
| + | 282 ' | ||
| + | 283 ]; | ||
| + | 284 } | ||
| + | 285 | ||
| + | 286 если ($ альт ) { | ||
| + | 287 если ( действиеOK ( ' | ||
| + | 288 $ head [ ' | ||
| + | 289 ' | ||
| + | 290 ' | ||
| + | 291 ' | ||
| + | 292 ' | ||
| + | 293 ]; | ||
| + | 294 $ head [ ' | ||
| + | 295 ' | ||
| + | 296 ' | ||
| + | 297 ' | ||
| + | 298 ' | ||
| + | 299 ]; | ||
| + | 300 } | ||
| + | 301 если (($ ACT == ' | ||
| + | 302 $ head [ ' | ||
| + | 303 ' | ||
| + | 304 ' | ||
| + | 305 ' | ||
| + | 306 ]; | ||
| + | 307 } | ||
| + | 308 | ||
| + | 309 если ( actionOK ( ' | ||
| + | 310 $ head [ ' | ||
| + | 311 ' | ||
| + | 312 ' | ||
| + | 313 ' | ||
| + | 314 ' | ||
| + | 315 ]; | ||
| + | 316 } | ||
| + | 317 | ||
| + | 318 если ( actionOK ( ' | ||
| + | 319 $ head [ ' | ||
| + | 320 ' | ||
| + | 321 ' | ||
| + | 322 ' | ||
| + | 323 ' | ||
| + | 324 ]; | ||
| + | 325 } | ||
| + | 326 | ||
| + | 327 если ( actionOK ( ' | ||
| + | 328 $ head [ ' | ||
| + | 329 ' | ||
| + | 330 ' | ||
| + | 331 ' | ||
| + | 332 ' | ||
| + | 333 ]; | ||
| + | 334 } | ||
| + | 335 } | ||
| + | 336 | ||
| + | 337 // настройка тегов робота, | ||
| + | 338 если (($ ACT == ' | ||
| + | 339 если ($ INFO [ ' | ||
| + | 340 // | ||
| + | 341 если (( время () - $ INFO [ ' | ||
| + | 342 $ head [ ' | ||
| + | 343 } еще { | ||
| + | 344 $ head [ ' | ||
| + | 345 } | ||
| + | 346 $ canonicalUrl = wl ($ ID , '' | ||
| + | 347 если ($ ID == $ conf [ ' | ||
| + | 348 $ canonicalUrl = DOKU_URL ; | ||
| + | 349 } | ||
| + | 350 $ head [ ' | ||
| + | 351 } еще { | ||
| + | 352 $ head [ ' | ||
| + | 353 } | ||
| + | 354 } elseif ( определено (' | ||
| + | 355 $ head [ ' | ||
| + | 356 } еще { | ||
| + | 357 $ head [ ' | ||
| + | 358 } | ||
| + | 359 | ||
| + | 360 // установить метаданные | ||
| + | 361 если ($ ACT == ' | ||
| + | 362 // ключевые слова (явные или неявные) | ||
| + | 363 если (! пусто ($ INFO [ ' | ||
| + | 364 $ head [ ' | ||
| + | 365 } еще { | ||
| + | 366 $ head [ ' | ||
| + | 367 } | ||
| + | 368 } | ||
| + | 369 | ||
| + | 370 // загрузка таблиц стилей | ||
| + | 371 $ head [ ' | ||
| + | 372 ' | ||
| + | 373 ' | ||
| + | 374 ]; | ||
| + | 375 | ||
| + | 376 $ script = "var NS=" . ( isset ($ INFO ) ? $ INFO [ ' | ||
| + | 377 если ($ conf [ ' | ||
| + | 378 $ скрипт .= "var SIG=" . тулбар_сигнатура () . ";" | ||
| + | 379 } | ||
| + | 380 jsinfo (); | ||
| + | 381 $ script .= 'var JSINFO = ' . json_encode ($ JSINFO , JSON_THROW_ON_ERROR ) . ';' | ||
| + | 382 $ script .= ' | ||
| + | 383 $ head [ ' | ||
| + | 384 | ||
| + | 385 // загрузить jquery | ||
| + | 386 $ jquery = getCdnUrls (); | ||
| + | 387 foreach ($ jquery | ||
| + | 388 $ head [ ' | ||
| + | 389 ' | ||
| + | 390 ' | ||
| + | 391 ] + ($ conf [ ' | ||
| + | 392 } | ||
| + | 393 | ||
| + | 394 // загружаем наш диспетчер javascript | ||
| + | 395 $ head [ ' | ||
| + | 396 ' | ||
| + | 397 ' | ||
| + | 398 ] + ($ conf [ ' | ||
| + | 399 | ||
| + | 400 // вызвать событие здесь | ||
| + | 401 Событие :: createAndTrigger ( ' | ||
| + | 402 вернуть | ||
| + | 403} | ||
| + | 404 | ||
| + | 405/** | ||
| + | 406* печатает массив, | ||
| + | 407* | ||
| + | 408* $data — это массив различных тегов заголовков. Каждый тег может иметь несколько | ||
| + | 409* экземпляры. Атрибуты задаются как пары ключ-значение. Значения будут HTML | ||
| + | 410* кодируются автоматически, | ||
| + | 411* | ||
| + | 412* Для тегов, имеющих атрибут body, укажите данные body в специальном поле | ||
| + | 413* атрибут ' | ||
| + | 414* | ||
| + | 415* Встроенные скрипты будут использовать любой одноразовый номер, указанный в переменной среды «NONCE». | ||
| + | 416* | ||
| + | 417* @param | ||
| + | 418* | ||
| + | 419* @автор Андреас Гор < | ||
| + | 420*/ | ||
| + | 421функция | ||
| + | 422{ | ||
| + | 423 $ nonce = getenv ( ' | ||
| + | 424 foreach ($ data как $ tag => $ inst ) { | ||
| + | 425 foreach ($ inst as $ attr ) { | ||
| + | 426 если ( пусто ($ attr )) { | ||
| + | 427 продолжать ; | ||
| + | 428 } | ||
| + | 429 если ($ nonce && $ tag == ' | ||
| + | 430 $ attr [ ' | ||
| + | 431 } | ||
| + | 432 echo '<' | ||
| + | 433 если ( isset ($ attr [ ' | ||
| + | 434 echo '>' | ||
| + | 435 } еще { | ||
| + | 436 эхо | ||
| + | 437 } | ||
| + | 438 эхо | ||
| + | 439 } | ||
| + | 440 } | ||
| + | 441} | ||
| + | 442 | ||
| + | 443/** | ||
| + | 444* Вывести данный скрипт как встроенный тег скрипта | ||
| + | 445* | ||
| + | 446* Эта функция добавит атрибут nonce, если он доступен. | ||
| + | 447* | ||
| + | 448* Скрипт НЕ экранируется автоматически! | ||
| + | 449* | ||
| + | 450* @param | ||
| + | 451* @param | ||
| + | 452* @return | ||
| + | 453*/ | ||
| + | 454функция | ||
| + | 455{ | ||
| + | 456 $ nonce = getenv ( ' | ||
| + | 457 если ($ nonce ) { | ||
| + | 458 $ скрипт = '< | ||
| + | 459 } еще { | ||
| + | 460 $ скрипт = '< | ||
| + | 461 } | ||
| + | 462 | ||
| + | 463 если ($ return ) return $ script ; | ||
| + | 464 эхо $ скрипт ; | ||
| + | 465} | ||
| + | 466 | ||
| + | 467/** | ||
| + | 468* Распечатать ссылку | ||
| + | 469* | ||
| + | 470* Просто создает ссылку. | ||
| + | 471* | ||
| + | 472* @param | ||
| + | 473* @param | ||
| + | 474* @param | ||
| + | 475* @param | ||
| + | 476* @return | ||
| + | 477* | ||
| + | 478* @автор Андреас Гор < | ||
| + | 479*/ | ||
| + | 480функция | ||
| + | 481{ | ||
| + | 482 $ out = '<a href="' | ||
| + | 483 если ($ more ) $ out .= ' ' . $ more ; | ||
| + | 484 $ out .= "> $ имя </ | ||
| + | 485 если ($ return ) вернуть $ out ; | ||
| + | 486 вывести $ ; | ||
| + | 487 | ||
| + | 488} | ||
| + | 489 | ||
| + | 490/** | ||
| + | 491* Печатает ссылку на WikiPage | ||
| + | 492* | ||
| + | 493* Обертка вокруг html_wikilink | ||
| + | 494* | ||
| + | 495* @param | ||
| + | 496* @param | ||
| + | 497* @param | ||
| + | 498* @return | ||
| + | 499* | ||
| + | 500* @автор Андреас Гор < | ||
| + | 501*/ | ||
| + | 502функция | ||
| + | 503{ | ||
| + | 504 $ out = '< | ||
| + | 505 если ($ return ) вернуть $ out ; | ||
| + | 506 вывести $ ; | ||
| + | 507 | ||
| + | 508} | ||
| + | 509 | ||
| + | 510/** | ||
| + | 511* получить родительскую страницу | ||
| + | 512* | ||
| + | 513* Пытается выяснить, | ||
| + | 514* возвращает false, если ничего не доступно | ||
| + | 515* | ||
| + | 516* @param | ||
| + | 517* @return | ||
| + | 518* | ||
| + | 519* @автор Андреас Гор < | ||
| + | 520*/ | ||
| + | 521функция | ||
| + | 522{ | ||
| + | 523 $ resolver = new PageResolver ( ' | ||
| + | 524 | ||
| + | 525 $ parent = getNS ($ id ). ':' | ||
| + | 526 $ parent = $ resolver -> resolveId ($ parent ); | ||
| + | 527 если ($ родитель == $ идентификатор ) { | ||
| + | 528 $ pos = strrpos ( getNS ($ id ), ':' | ||
| + | 529 $ parent = substr ($ parent , 0 , $ pos ). ':' | ||
| + | 530 $ parent = $ resolver -> resolveId ($ parent ); | ||
| + | 531 если ($ parent == $ id ) вернуть | ||
| + | 532 } | ||
| + | 533 вернуть $ родитель ; | ||
| + | 534} | ||
| + | 535 | ||
| + | 536/** | ||
| + | 537* Распечатать одну из кнопок | ||
| + | 538* | ||
| + | 539* @param | ||
| + | 540* @param | ||
| + | 541* @return | ||
| + | 542* @see | ||
| + | 543* | ||
| + | 544* @автор Адриан Лэнг < | ||
| + | 545* @deprecated 2017-09-01 см. devel:menus | ||
| + | 546*/ | ||
| + | 547функция | ||
| + | 548{ | ||
| + | 549 dbg_deprecated ( 'см. devel: | ||
| + | 550 $ data = tpl_get_action ($ type ); | ||
| + | 551 если ($ данные === ложь ) { | ||
| + | 552 вернуть | ||
| + | 553 } elseif (! is_array ($ data )) { | ||
| + | 554 $ out = sprintf ($ data , ' | ||
| + | 555 } еще { | ||
| + | 556 /** | ||
| + | 557 * @var string $accesskey | ||
| + | 558 * @var string $id | ||
| + | 559 * @var string $метод | ||
| + | 560 * @var массив $params | ||
| + | 561 */ | ||
| + | 562 извлечь ($ data ); | ||
| + | 563 если ($ id === '# | ||
| + | 564 $ out = html_topbtn (); | ||
| + | 565 } еще { | ||
| + | 566 $ out = html_btn ($ type , $ id , $ accesskey , $ params , $ method ); | ||
| + | 567 } | ||
| + | 568 } | ||
| + | 569 если ($ return ) вернуть $ out ; | ||
| + | 570 вывести $ ; | ||
| + | 571 | ||
| + | 572} | ||
| + | 573 | ||
| + | 574/** | ||
| + | 575* Как кнопки действий, | ||
| + | 576* | ||
| + | 577* @param | ||
| + | 578* @param | ||
| + | 579* @param | ||
| + | 580* @param | ||
| + | 581* @param | ||
| + | 582* @return | ||
| + | 583* | ||
| + | 584* @see | ||
| + | 585* @автор Адриан Лэнг < | ||
| + | 586* @deprecated 2017-09-01 см. devel:menus | ||
| + | 587*/ | ||
| + | 588функция | ||
| + | 589{ | ||
| + | 590 dbg_deprecated ( 'см. devel: | ||
| + | 591 глобальный $ lang ; | ||
| + | 592 $ data = tpl_get_action ($ type ); | ||
| + | 593 если ($ данные === ложь ) { | ||
| + | 594 вернуть | ||
| + | 595 } elseif (! is_array ($ data )) { | ||
| + | 596 $ out = sprintf ($ data , ' | ||
| + | 597 } еще { | ||
| + | 598 /** | ||
| + | 599 * @var string $accesskey | ||
| + | 600 * @var string $id | ||
| + | 601 * @var string $метод | ||
| + | 602 * @var bool $nofollow | ||
| + | 603 * @var массив $params | ||
| + | 604 * @var string $replacement | ||
| + | 605 */ | ||
| + | 606 извлечь ($ data ); | ||
| + | 607 если ( strpos ($ id , '#' | ||
| + | 608 $ linktarget = $ id ; | ||
| + | 609 } еще { | ||
| + | 610 $ linktarget = wl ($ id , $ params ); | ||
| + | 611 } | ||
| + | 612 $ caption = $ lang [ ' | ||
| + | 613 если ( strpos ($ caption , ' | ||
| + | 614 $ caption = sprintf ($ caption , $ replacement ); | ||
| + | 615 } | ||
| + | 616 $ akey = '' | ||
| + | 617 $ addTitle = '' | ||
| + | 618 если ($ accesskey ) { | ||
| + | 619 $ akey = ' | ||
| + | 620 $ addTitle = ' | ||
| + | 621 } | ||
| + | 622 $ rel = $ nofollow ? ' | ||
| + | 623 $ out = tpl_link ( | ||
| + | 624 $ ссылкацель , | ||
| + | 625 $ pre . ($ inner ?: $ caption ) . $ suf , | ||
| + | 626 ' | ||
| + | 627 $ akey . $ rel . | ||
| + | 628 ' | ||
| + | 629 истинный | ||
| + | 630 ); | ||
| + | 631 } | ||
| + | 632 если ($ return ) вернуть $ out ; | ||
| + | 633 вывести $ ; | ||
| + | 634 | ||
| + | 635} | ||
| + | 636 | ||
| + | 637/** | ||
| + | 638* Проверьте действия и получите данные для кнопок и ссылок | ||
| + | 639* | ||
| + | 640* @param | ||
| + | 641* @return | ||
| + | 642* | ||
| + | 643* @автор Адриан Лэнг < | ||
| + | 644* @автор Андреас Гор < | ||
| + | 645* @автор Маттиас Гримм < | ||
| + | 646* @deprecated 2017-09-01 см. devel:menus | ||
| + | 647*/ | ||
| + | 648функция | ||
| + | 649{ | ||
| + | 650 dbg_deprecated ( 'см. devel: | ||
| + | 651 если ($ type == ' | ||
| + | 652 если ($ type == ' | ||
| + | 653 если ($ type == ' | ||
| + | 654 | ||
| + | 655 $ class = ' \\ dokuwiki \\ Меню \\ Элемент \\ ' . ucfirst ($ type ); | ||
| + | 656 если ( class_exists ($ class )) { | ||
| + | 657 пытаться { | ||
| + | 658 /** @var AbstractItem $item */ | ||
| + | 659 $ item = новый $ class (); | ||
| + | 660 $ data = $ item -> getLegacyData (); | ||
| + | 661 $ неизвестно = ложь ; | ||
| + | 662 } catch ( RuntimeException $ игнорируется ) { | ||
| + | 663 вернуть | ||
| + | 664 } | ||
| + | 665 } еще { | ||
| + | 666 глобальный $ ID ; | ||
| + | 667 $ данные = [ | ||
| + | 668 ' | ||
| + | 669 ' | ||
| + | 670 ' | ||
| + | 671 ' | ||
| + | 672 ' | ||
| + | 673 ' | ||
| + | 674 ' | ||
| + | 675 ]; | ||
| + | 676 $ неизвестно = правда ; | ||
| + | 677 } | ||
| + | 678 | ||
| + | 679 $ evt = новое | ||
| + | 680 если ($ evt -> advice_before ()) { | ||
| + | 681 // | ||
| + | 682 если ($ неизвестно ) { | ||
| + | 683 $ data = ' | ||
| + | 684 } | ||
| + | 685 } | ||
| + | 686 $ evt -> advice_after (); | ||
| + | 687 снято ($ evt ); | ||
| + | 688 | ||
| + | 689 вернуть $ данные ; | ||
| + | 690} | ||
| + | 691 | ||
| + | 692/** | ||
| + | 693* Обертка вокруг tpl_button() и tpl_actionlink() | ||
| + | 694* | ||
| + | 695* @param | ||
| + | 696* @param | ||
| + | 697* @param | ||
| + | 698* @param | ||
| + | 699* @param | ||
| + | 700* @param | ||
| + | 701* @param | ||
| + | 702* @return | ||
| + | 703* | ||
| + | 704* @автор Аника Хенке < | ||
| + | 705* @deprecated 2017-09-01 см. devel:menus | ||
| + | 706*/ | ||
| + | 707функция | ||
| + | 708{ | ||
| + | 709 dbg_deprecated ( 'см. devel: | ||
| + | 710 $ out = '' | ||
| + | 711 если ($ ссылка ) { | ||
| + | 712 $ out .= tpl_actionlink ($ type , $ pre , $ suf , $ inner , true ); | ||
| + | 713 } еще { | ||
| + | 714 $ out .= tpl_button ( $ type , true ); | ||
| + | 715 } | ||
| + | 716 если ($ out && $ wrapper ) $ out = "< $ wrapper > $ out </ $ wrapper >" ; | ||
| + | 717 | ||
| + | 718 если ($ return ) вернуть $ out ; | ||
| + | 719 вывести $ ; | ||
| + | 720 | ||
| + | 721} | ||
| + | 722 | ||
| + | 723/** | ||
| + | 724* Распечатать форму поиска | ||
| + | 725* | ||
| + | 726* Если первый параметр задан как div с идентификатором ' | ||
| + | 727* добавляется, | ||
| + | 728* его вывод в этот div. Второй параметр управляет собственным | ||
| + | 729* атрибут автозаполнения. Если установлено значение false, этот атрибут будет установлен с | ||
| + | 730* значение " | ||
| + | 731* функция автодополнения (MSIE и Firefox) | ||
| + | 732* | ||
| + | 733* @param | ||
| + | 734* @param | ||
| + | 735* @return | ||
| + | 736* | ||
| + | 737* @автор Андреас Гор < | ||
| + | 738*/ | ||
| + | 739функция | ||
| + | 740{ | ||
| + | 741 глобальный $ lang ; | ||
| + | 742 глобальный $ ACT ; | ||
| + | 743 глобальный $ ЗАПРОС ; | ||
| + | 744 глобальный $ ID ; | ||
| + | 745 | ||
| + | 746 // не печатать форму поиска, | ||
| + | 747 если (! actionOK ( ' | ||
| + | 748 | ||
| + | 749 $ searchForm = новая | ||
| + | 750 ' | ||
| + | 751 ' | ||
| + | 752 ' | ||
| + | 753 ' | ||
| + | 754 ' | ||
| + | 755 ], истинный ); | ||
| + | 756 $ searchForm -> addTagOpen ( ' | ||
| + | 757 $ searchForm -> setHiddenField ( ' | ||
| + | 758 $ searchForm -> setHiddenField ( ' | ||
| + | 759 $ searchForm -> addTextInput ( ' | ||
| + | 760 -> добавитьКласс ( ' | ||
| + | 761 -> атрибуты ([ | ||
| + | 762 ' | ||
| + | 763 ' | ||
| + | 764 ' | ||
| + | 765 ' | ||
| + | 766 ]) | ||
| + | 767 -> идентификатор ( ' | ||
| + | 768 -> val ($ ACT === ' | ||
| + | 769 -> useInput ( false ); | ||
| + | 770 $ searchForm -> addButton ( '' | ||
| + | 771 ' | ||
| + | 772 ' | ||
| + | 773 ]); | ||
| + | 774 если ($ ajax ) { | ||
| + | 775 $ searchForm -> addTagOpen ( ' | ||
| + | 776 $ searchForm -> addTagClose ( ' | ||
| + | 777 } | ||
| + | 778 $ searchForm -> addTagClose ( ' | ||
| + | 779 | ||
| + | 780 echo $ searchForm -> toHTML ( ' | ||
| + | 781 | ||
| + | 782 вернуть | ||
| + | 783} | ||
| + | 784 | ||
| + | 785/** | ||
| + | 786* Распечатать след навигационной цепочки | ||
| + | 787* | ||
| + | 788* @param | ||
| + | 789* @param | ||
| + | 790* @return | ||
| + | 791* | ||
| + | 792* @автор Андреас Гор < | ||
| + | 793*/ | ||
| + | 794функция | ||
| + | 795{ | ||
| + | 796 глобальный $ lang ; | ||
| + | 797 глобальная $ conf ; | ||
| + | 798 | ||
| + | 799 // | ||
| + | 800 если (!$ conf [ ' | ||
| + | 801 | ||
| + | 802 // | ||
| + | 803 если ( is_null ($ sep )) $ sep = ' | ||
| + | 804 | ||
| + | 805 $ out = '' | ||
| + | 806 | ||
| + | 807 $ crumbs = breadcrumbs (); // | ||
| + | 808 | ||
| + | 809 $ crumbs_sep = ' <span class=" | ||
| + | 810 | ||
| + | 811 // | ||
| + | 812 $ out .= '< | ||
| + | 813 $ last = count ($ crubs ); | ||
| + | 814 $ я = 0 ; | ||
| + | 815 foreach ($ крошки | ||
| + | 816 $ я ++; | ||
| + | 817 $ out .= $ crumbs_sep ; | ||
| + | 818 если ($ i == $ last ) $ out .= '< | ||
| + | 819 $ out .= '< | ||
| + | 820 если ($ i == $ last ) $ out .= '</ | ||
| + | 821 } | ||
| + | 822 если ($ return ) вернуть $ out ; | ||
| + | 823 вывести $ ; | ||
| + | 824 | ||
| + | 825} | ||
| + | 826 | ||
| + | 827/** | ||
| + | 828* Иерархическая навигационная цепочка | ||
| + | 829* | ||
| + | 830* Этот код был предложен в качестве замены обычным хлебным крошкам. | ||
| + | 831* Имеет смысл только при наличии глубокой структуры сайта. | ||
| + | 832* | ||
| + | 833* @param | ||
| + | 834* @param | ||
| + | 835* @return | ||
| + | 836* | ||
| + | 837* @todo может вести себя странно в языках с письмом справа налево | ||
| + | 838* @автор < | ||
| + | 839* @автор Андреас Гор < | ||
| + | 840* @автор Найджел Макни < | ||
| + | 841* @автор Шон Коутс < | ||
| + | 842*/ | ||
| + | 843функция | ||
| + | 844{ | ||
| + | 845 глобальная $ conf ; | ||
| + | 846 глобальный $ ID ; | ||
| + | 847 глобальный $ lang ; | ||
| + | 848 | ||
| + | 849 // проверить, | ||
| + | 850 если (!$ conf [ ' | ||
| + | 851 | ||
| + | 852 // | ||
| + | 853 если ( is_null ($ sep )) $ sep = ' » ' ; | ||
| + | 854 | ||
| + | 855 $ out = '' | ||
| + | 856 | ||
| + | 857 $ parts = Explode ( ':' | ||
| + | 858 $ count = count ($ parts ); | ||
| + | 859 | ||
| + | 860 $ out .= '< | ||
| + | 861 | ||
| + | 862 // всегда печатать стартовую страницу | ||
| + | 863 $ out .= '< | ||
| + | 864 | ||
| + | 865 // распечатать промежуточные ссылки пространства имен | ||
| + | 866 $ часть = '' | ||
| + | 867 для ($ i = 0 ; $ i < $ count - 1 ; $ i ++) { | ||
| + | 868 $ часть .= $ часть [$ i ]. ':' | ||
| + | 869 $ страница = $ часть ; | ||
| + | 870 if ($ page == $ conf [ ' | ||
| + | 871 | ||
| + | 872 // выход | ||
| + | 873 $ out .= $ sep . tpl_pagelink ( $ page , null , true ); | ||
| + | 874 } | ||
| + | 875 | ||
| + | 876 // распечатать текущую страницу, | ||
| + | 877 если ( isset ($ страница )) { | ||
| + | 878 $ page = ( new PageResolver ( ' | ||
| + | 879 если ($ страница == $ часть . $ части [$ я ]) { | ||
| + | 880 если ($ return ) вернуть $ out ; | ||
| + | 881 вывести $ ; | ||
| + | 882 | ||
| + | 883 } | ||
| + | 884 } | ||
| + | 885 $ страница = $ часть . $ части [$ i ]; | ||
| + | 886 если ($ страница == $ конф [ ' | ||
| + | 887 если ($ return ) вернуть $ out ; | ||
| + | 888 вывести $ ; | ||
| + | 889 | ||
| + | 890 } | ||
| + | 891 $ out .= $ sep ; | ||
| + | 892 $ out .= tpl_pagelink ($ page , null , true ); | ||
| + | 893 если ($ return ) вернуть $ out ; | ||
| + | 894 вывести $ ; | ||
| + | 895 | ||
| + | 896} | ||
| + | 897 | ||
| + | 898/** | ||
| + | 899* Распечатать информацию, | ||
| + | 900* и в этом случае показывать полное имя | ||
| + | 901* | ||
| + | 902* Можно ли в будущем добавить ссылку на профиль? | ||
| + | 903* | ||
| + | 904* @return | ||
| + | 905* | ||
| + | 906* @автор Андреас Гор < | ||
| + | 907*/ | ||
| + | 908функция | ||
| + | 909{ | ||
| + | 910 глобальный $ lang ; | ||
| + | 911 /** @var Вход $INPUT */ | ||
| + | 912 глобальный $ ВХОД ; | ||
| + | 913 | ||
| + | 914 если ($ INPUT -> сервер -> str ( ' | ||
| + | 915 echo $ lang [ ' | ||
| + | 916 вернуть | ||
| + | 917 } | ||
| + | 918 вернуть | ||
| + | 919} | ||
| + | 920 | ||
| + | 921/** | ||
| + | 922* Распечатать некоторую информацию о текущей странице | ||
| + | 923* | ||
| + | 924* @param | ||
| + | 925* @return | ||
| + | 926* | ||
| + | 927* @автор Андреас Гор < | ||
| + | 928*/ | ||
| + | 929функция | ||
| + | 930{ | ||
| + | 931 глобальная $ conf ; | ||
| + | 932 глобальный $ lang ; | ||
| + | 933 глобальная $ ИНФОРМАЦИЯ ; | ||
| + | 934 глобальный $ ID ; | ||
| + | 935 | ||
| + | 936 // возвращаем, | ||
| + | 937 если (! auth_quickaclcheck ($ ID )) { | ||
| + | 938 вернуть | ||
| + | 939 } | ||
| + | 940 | ||
| + | 941 // подготовить дату и путь | ||
| + | 942 $ fn = $ INFO [ ' | ||
| + | 943 если (!$ conf [ ' | ||
| + | 944 если ($ ИНФОРМАЦИЯ [ ' | ||
| + | 945 $ fn = str_replace ($ conf [ ' | ||
| + | 946 } еще { | ||
| + | 947 $ fn = str_replace ($ conf [ ' | ||
| + | 948 } | ||
| + | 949 } | ||
| + | 950 $ fn = utf8_decodeFN ($ fn ); | ||
| + | 951 $ date = dformat ($ INFO [ ' | ||
| + | 952 | ||
| + | 953 // распечатать это | ||
| + | 954 если ($ INFO [ ' | ||
| + | 955 $ out = '< | ||
| + | 956 $ out .= ' · ' ; | ||
| + | 957 $ out .= $ lang [ ' | ||
| + | 958 $ out .= ' ' ; | ||
| + | 959 $ out .= $ date ; | ||
| + | 960 если ($ INFO [ ' | ||
| + | 961 $ out .= ' ' . $ lang [ ' | ||
| + | 962 $ out .= '< | ||
| + | 963 } еще { | ||
| + | 964 $ out .= ' (' . $ lang [ ' | ||
| + | 965 } | ||
| + | 966 если ($ INFO [ ' | ||
| + | 967 $ out .= ' · ' ; | ||
| + | 968 $ out .= $ lang [ ' | ||
| + | 969 $ out .= ' ' ; | ||
| + | 970 $ out .= '< | ||
| + | 971 } | ||
| + | 972 если ($ рет ) { | ||
| + | 973 возврат $ из ; | ||
| + | 974 } еще { | ||
| + | 975 вывести $ ; | ||
| + | 976 | ||
| + | 977 } | ||
| + | 978 } | ||
| + | 979 вернуть | ||
| + | 980} | ||
| + | 981 | ||
| + | 982/** | ||
| + | 983* Печатает или возвращает имя указанной страницы (текущей, | ||
| + | 984* | ||
| + | 985* Если включено использование заголовка, | ||
| + | 986* используется указанный идентификатор. | ||
| + | 987* | ||
| + | 988* @param | ||
| + | 989* @param | ||
| + | 990* @return | ||
| + | 991* | ||
| + | 992* @автор Андреас Гор < | ||
| + | 993*/ | ||
| + | 994функция | ||
| + | 995{ | ||
| + | 996 глобальные $ ACT , $ conf , $ lang ; | ||
| + | 997 | ||
| + | 998 если ( is_null ($ id )) { | ||
| + | 999 глобальный $ ID ; | ||
| + | 1000 $ id = $ ID ; | ||
| + | 1001 } | ||
| + | 1002 | ||
| + | 1003 $ имя = $ идентификатор ; | ||
| + | 1004 если ( useHeading ( ' | ||
| + | 1005 $ first_heading = p_get_first_heading ($ id ); | ||
| + | 1006 если ($ first_heading ) $ name = $ first_heading ; | ||
| + | 1007 } | ||
| + | 1008 | ||
| + | 1009 // заголовок страницы по умолчанию — это имя страницы, | ||
| + | 1010 переключатель ($ ACT ) { | ||
| + | 1011 // административные функции | ||
| + | 1012 случай | ||
| + | 1013 $ page_title = $ lang [ ' | ||
| + | 1014 // попробуем получить имя плагина | ||
| + | 1015 /** @var AdminPlugin $plugin */ | ||
| + | 1016 если ($ plugin = plugin_getRequestAdminPlugin ()) { | ||
| + | 1017 $ plugin_title = $ plugin -> getMenuText ($ conf [ ' | ||
| + | 1018 $ page_title = $ plugin_title ?: $ plugin -> getPluginName (); | ||
| + | 1019 } | ||
| + | 1020 перерыв ; | ||
| + | 1021 | ||
| + | 1022 // показать действие как заголовок | ||
| + | 1023 случай | ||
| + | 1024 кейс | ||
| + | 1025 случай | ||
| + | 1026 случай | ||
| + | 1027 случай | ||
| + | 1028 случай | ||
| + | 1029 $ page_title = $ lang [ ' | ||
| + | 1030 перерыв ; | ||
| + | 1031 | ||
| + | 1032 // добавить ручку во время редактирования | ||
| + | 1033 случай | ||
| + | 1034 случай | ||
| + | 1035 $ page_title = "✎ " . $ name ; | ||
| + | 1036 перерыв ; | ||
| + | 1037 | ||
| + | 1038 // добавить действие к названию страницы | ||
| + | 1039 дело | ||
| + | 1040 $ page_title = $ name . ' - ' . $ lang [ ' | ||
| + | 1041 перерыв ; | ||
| + | 1042 | ||
| + | 1043 // добавить действие к названию страницы | ||
| + | 1044 случай | ||
| + | 1045 случай | ||
| + | 1046 случай | ||
| + | 1047 $ page_title = $ name .'- ' .$ lang [ ' | ||
| + | 1048 перерыв ; | ||
| + | 1049 | ||
| + | 1050 по умолчанию : // SHOW и все остальное, | ||
| + | 1051 $ page_title = $ name ; | ||
| + | 1052 } | ||
| + | 1053 | ||
| + | 1054 если ($ рет ) { | ||
| + | 1055 вернуть | ||
| + | 1056 } еще { | ||
| + | 1057 echo hsc ($ page_title ); | ||
| + | 1058 вернуть | ||
| + | 1059 } | ||
| + | 1060} | ||
| + | 1061 | ||
| + | 1062/** | ||
| + | 1063* Возвращает запрошенный тег EXIF / IPTC из текущего изображения | ||
| + | 1064* | ||
| + | 1065* Если $tags — это массив, | ||
| + | 1066* значение найдено. Если значение не найдено, | ||
| + | 1067* | ||
| + | 1068* Какие тексты известны, | ||
| + | 1069* и _iptcTagNames() в inc / jpeg.php (Вам необходимо добавить IPTC | ||
| + | 1070* к именам последнего) | ||
| + | 1071* | ||
| + | 1072* Разрешено только в: detail.php | ||
| + | 1073* | ||
| + | 1074* @param | ||
| + | 1075* @param | ||
| + | 1076* @param | ||
| + | 1077* @возвращаемая | ||
| + | 1078* | ||
| + | 1079* @автор Андреас Гор < | ||
| + | 1080*/ | ||
| + | 1081функция | ||
| + | 1082{ | ||
| + | 1083 // Инициализация Exif-ридера | ||
| + | 1084 глобальный $ SRC , $ imgMeta ; | ||
| + | 1085 | ||
| + | 1086 если ( is_null ($ src )) $ src = $ SRC ; | ||
| + | 1087 если ( is_null ($ src )) вернуть $ alt ; | ||
| + | 1088 | ||
| + | 1089 если (! isset ($ imgMeta )) { | ||
| + | 1090 $ imgMeta = new JpegMeta ($ src ); | ||
| + | 1091 } | ||
| + | 1092 если ($ imgMeta === false ) вернуть $ alt ; | ||
| + | 1093 $ info = cleanText ($ imgMeta -> getField ($ tags )); | ||
| + | 1094 если (!$ info ) вернуть $ alt ; | ||
| + | 1095 вернуть $ информацию ; | ||
| + | 1096} | ||
| + | 1097 | ||
| + | 1098 | ||
| + | 1099/** | ||
| + | 1100* Мусор собирает открытый объект JpegMeta. | ||
| + | 1101*/ | ||
| + | 1102функция | ||
| + | 1103{ | ||
| + | 1104 глобальный $ imgMeta ; | ||
| + | 1105 $ imgMeta = null ; | ||
| + | 1106} | ||
| + | 1107 | ||
| + | 1108/** | ||
| + | 1109* Выводит HTML-список описаний метатегов текущего изображения | ||
| + | 1110*/ | ||
| + | 1111функция | ||
| + | 1112{ | ||
| + | 1113 глобальный $ lang ; | ||
| + | 1114 | ||
| + | 1115 $ теги = tpl_get_img_meta (); | ||
| + | 1116 | ||
| + | 1117 эхо | ||
| + | 1118 foreach ($ теги | ||
| + | 1119 $ label = $ lang [$ tag [ ' | ||
| + | 1120 если (!$ label ) $ label = $ tag [ ' | ||
| + | 1121 | ||
| + | 1122 echo '< | ||
| + | 1123 если ($ тег [ ' | ||
| + | 1124 echo dformat ($ тег [ ' | ||
| + | 1125 } еще { | ||
| + | 1126 echo hsc ($ тег [ ' | ||
| + | 1127 } | ||
| + | 1128 эхо | ||
| + | 1129 } | ||
| + | 1130 эхо | ||
| + | 1131} | ||
| + | 1132 | ||
| + | 1133/** | ||
| + | 1134* Возвращает метаданные, | ||
| + | 1135* | ||
| + | 1136* @return | ||
| + | 1137* - строка langkey key для поиска в переменной $lang, если не найдена, | ||
| + | 1138* - строковый тип значения | ||
| + | 1139* - строковое значение тега (неэкранированное) | ||
| + | 1140*/ | ||
| + | 1141функция | ||
| + | 1142{ | ||
| + | 1143 | ||
| + | 1144 $ config_files = getConfigFiles ( ' | ||
| + | 1145 foreach ($ config_files | ||
| + | 1146 если ( file_exists ($ config_file )) { | ||
| + | 1147 включить ($ config_file ); | ||
| + | 1148 } | ||
| + | 1149 } | ||
| + | 1150 $ теги = []; | ||
| + | 1151 foreach ($ поля | ||
| + | 1152 $ т = []; | ||
| + | 1153 если (! пусто ($ тег [ 0 ])) { | ||
| + | 1154 $ т = [$ тег [ 0 ]]; | ||
| + | 1155 } | ||
| + | 1156 если ( isset ($ тег [ 3 ]) && is_array ($ тег [ 3 ])) { | ||
| + | 1157 $ t = array_merge ($ t , $ tag [ 3 ]); | ||
| + | 1158 } | ||
| + | 1159 $ value = tpl_img_getTag ($ t ); | ||
| + | 1160 если ($ значение ) { | ||
| + | 1161 $ теги [] = [ ' | ||
| + | 1162 } | ||
| + | 1163 } | ||
| + | 1164 вернуть $ теги ; | ||
| + | 1165} | ||
| + | 1166 | ||
| + | 1167/** | ||
| + | 1168* Печатает изображение со ссылкой на полноразмерную версию | ||
| + | 1169* | ||
| + | 1170* Разрешено только в: detail.php | ||
| + | 1171* | ||
| + | 1172* @triggers TPL_IMG_DISPLAY | ||
| + | 1173* @param | ||
| + | 1174* @param | ||
| + | 1175* @param | ||
| + | 1176* @param | ||
| + | 1177* @return | ||
| + | 1178*/ | ||
| + | 1179функция | ||
| + | 1180{ | ||
| + | 1181 глобальный $ IMG ; | ||
| + | 1182 /** @var Вход $INPUT */ | ||
| + | 1183 глобальный $ ВХОД ; | ||
| + | 1184 глобальный $ REV ; | ||
| + | 1185 $ w = ( int ) tpl_img_getTag ( ' | ||
| + | 1186 $ h = ( int ) tpl_img_getTag ( ' | ||
| + | 1187 | ||
| + | 1188 // | ||
| + | 1189Коэффициент | ||
| + | 1190 если ($ w >= $ h ) { | ||
| + | 1191 если ($ максширина && $ w >= $ максширина ) { | ||
| + | 1192 $ отношение = $ максимальнаяширина / $ w ; | ||
| + | 1193 } elseif ($ maxheight && $ h > $ maxheight ) { | ||
| + | 1194 $ отношение = $ максимальная высота / $ h ; | ||
| + | 1195 } | ||
| + | 1196 } elseif ($ maxheight && $ h >= $ maxheight ) { | ||
| + | 1197 $ отношение = $ максимальная высота / $ h ; | ||
| + | 1198 } elseif ($ maxwidth && $ w > $ maxwidth ) { | ||
| + | 1199 $ отношение = $ максимальнаяширина / $ w ; | ||
| + | 1200 } | ||
| + | 1201 если ($ отношение ) { | ||
| + | 1202 $ w = пол ($ отношение * $ w ); | ||
| + | 1203 $ h = пол ( соотношение $ * $ h ); | ||
| + | 1204 } | ||
| + | 1205 | ||
| + | 1206 // | ||
| + | 1207 $ url = ml ($ IMG , [ ' | ||
| + | 1208 $ src = ml ($ IMG , [ ' | ||
| + | 1209 | ||
| + | 1210 // | ||
| + | 1211 $ alt = tpl_img_getTag ( ' | ||
| + | 1212 если ( is_null ($ params )) { | ||
| + | 1213 $ р = []; | ||
| + | 1214 } еще { | ||
| + | 1215 $ p = $ параметры ; | ||
| + | 1216 } | ||
| + | 1217 если ($ w ) $ p [ ' | ||
| + | 1218 если ($ h ) $ p [ ' | ||
| + | 1219 $ p [ ' | ||
| + | 1220 если ($ альт ) { | ||
| + | 1221 $ p [ ' | ||
| + | 1222 $ p [ ' | ||
| + | 1223 } еще { | ||
| + | 1224 $ p [ ' | ||
| + | 1225 } | ||
| + | 1226 $ p [ ' | ||
| + | 1227 | ||
| + | 1228 $ data = [ ' | ||
| + | 1229 return | ||
| + | 1230} | ||
| + | 1231 | ||
| + | 1232/** | ||
| + | 1233* Действие по умолчанию для TPL_IMG_DISPLAY | ||
| + | 1234* | ||
| + | 1235* @param | ||
| + | 1236* @return | ||
| + | 1237*/ | ||
| + | 1238функция | ||
| + | 1239{ | ||
| + | 1240 глобальный $ lang ; | ||
| + | 1241 $ p = buildAttributes ($ data [ ' | ||
| + | 1242 | ||
| + | 1243 если ($ data [ ' | ||
| + | 1244 echo '< | ||
| + | 1245 если ($ data [ ' | ||
| + | 1246 вернуть | ||
| + | 1247} | ||
| + | 1248 | ||
| + | 1249/** | ||
| + | 1250* Эта функция вставляет небольшой gif-файл, | ||
| + | 1251* | ||
| + | 1252* Должен вызываться где-то в самом конце шаблона main.php | ||
| + | 1253* | ||
| + | 1254* @return | ||
| + | 1255*/ | ||
| + | 1256функция | ||
| + | 1257{ | ||
| + | 1258 глобальный $ ID ; | ||
| + | 1259 | ||
| + | 1260 $ р = []; | ||
| + | 1261 $ p [ ' | ||
| + | 1262 '&' | ||
| + | 1263 $ p [ ' | ||
| + | 1264 $ p [ ' | ||
| + | 1265 $ p [ ' | ||
| + | 1266 $ att = buildAttributes ($ p ); | ||
| + | 1267 echo "< | ||
| + | 1268 вернуть | ||
| + | 1269} | ||
| + | 1270 | ||
| + | 1271/** | ||
| + | 1272* tpl_getConf($id) | ||
| + | 1273* | ||
| + | 1274* используйте эту функцию для доступа к переменным конфигурации шаблона | ||
| + | 1275* | ||
| + | 1276* @param | ||
| + | 1277* @param | ||
| + | 1278* @return | ||
| + | 1279*/ | ||
| + | 1280функция | ||
| + | 1281{ | ||
| + | 1282 глобальная $ conf ; | ||
| + | 1283 статический $ tpl_configloaded = false ; | ||
| + | 1284 | ||
| + | 1285 $ tpl = $ conf [ ' | ||
| + | 1286 | ||
| + | 1287 если (!$ tpl_configloaded ) { | ||
| + | 1288 $ tconf = tpl_loadConfig (); | ||
| + | 1289 если ($ tconf !== false ) { | ||
| + | 1290 foreach ($ tconf as $ key => $ value ) { | ||
| + | 1291 если ( isset ($ conf [ ' | ||
| + | 1292 $ conf [ ' | ||
| + | 1293 } | ||
| + | 1294 $ tpl_configloaded = true ; | ||
| + | 1295 } | ||
| + | 1296 } | ||
| + | 1297 | ||
| + | 1298 вернуть $ conf [ ' | ||
| + | 1299} | ||
| + | 1300 | ||
| + | 1301/** | ||
| + | 1302* tpl_loadConfig() | ||
| + | 1303* | ||
| + | 1304* считывает все переменные конфигурации шаблона | ||
| + | 1305* эта функция автоматически вызывается tpl_getConf() | ||
| + | 1306* | ||
| + | 1307* @return | ||
| + | 1308*/ | ||
| + | 1309функция | ||
| + | 1310{ | ||
| + | 1311 | ||
| + | 1312 $ file = tpl_incdir ( | ||
| + | ) . ' / | ||
| + | 1314 | ||
| + | 1315 если (! file_exists ($ file )) вернуть | ||
| + | 1316 | ||
| + | 1317 // загрузить файл конфигурации по умолчанию | ||
| + | 1318 включить ($ файл ); | ||
| + | 1319 | ||
| + | 1320 вернуть $ conf ; | ||
| + | 1321} | ||
| + | 1322 | ||
| + | 1323// методы языка | ||
| + | 1324 | ||
| + | 1325/** | ||
| + | 1326* tpl_getLang($id) | ||
| + | 1327* | ||
| + | 1328* используйте эту функцию для доступа к переменным языка шаблона | ||
| + | 1329* | ||
| + | 1330* @param | ||
| + | 1331* @возвращаемая | ||
| + | 1332*/ | ||
| + | 1333функция | ||
| + | 1334{ | ||
| + | 1335 статический $ lang = []; | ||
| + | 1336 | ||
| + | 1337 если ( количество ($ язык ) === 0 ) { | ||
| + | 1338 global $ conf , $ config_cascade ; // определенно не вызывайте " | ||
| + | 1339 | ||
| + | 1340 $ path = tpl_incdir () . ' | ||
| + | 1341 | ||
| + | 1342 $ lang = []; | ||
| + | 1343 | ||
| + | 1344 // не включайте один раз | ||
| + | 1345 @include ( $ path.' | ||
| + | 1346 | ||
| + | 1347 если ( file_exists ($ config_file . $ conf [ ' | ||
| + | 1348 include ($ config_file .$ conf [ ' | ||
| + | 1349 } | ||
| + | 1350 } | ||
| + | 1351 | ||
| + | 1352 if ($ conf [ ' | ||
| + | 1353 @include ($ path .$ conf [ ' | ||
| + | 1354 foreach ($ config_cascade [ ' | ||
| + | 1355 если ( file_exists ($ config_file . $ conf [ ' | ||
| + | 1356 include ($ config_file .$ conf [ ' | ||
| + | 1357 } | ||
| + | 1358 } | ||
| + | 1359 } | ||
| + | 1360 } | ||
| + | 1361 вернуть $ lang [$ id ] ?? '' | ||
| + | 1362} | ||
| + | 1363 | ||
| + | 1364/** | ||
| + | 1365* Извлечь файл, зависящий от языка, и передать его в xhtml-рендерер для отображения | ||
| + | 1366* эквивалент шаблона p_locale_xhtml() | ||
| + | 1367* | ||
| + | 1368* @param | ||
| + | 1369* @return | ||
| + | 1370*/ | ||
| + | 1371функция | ||
| + | 1372{ | ||
| + | 1373 вернуть | ||
| + | 1374} | ||
| + | 1375 | ||
| + | 1376/** | ||
| + | 1377* Добавляет соответствующий путь к имени файла, зависящему от языка | ||
| + | 1378* | ||
| + | 1379* @param | ||
| + | 1380* @return | ||
| + | 1381*/ | ||
| + | 1382функция | ||
| + | 1383{ | ||
| + | 1384 $ path = tpl_incdir () . ' | ||
| + | 1385 глобальная $ conf ; | ||
| + | 1386 $ file = DOKU_CONF.' | ||
| + | 1387 если (! file_exists ($ file )) { | ||
| + | 1388 $ file = $ path .$ conf [ ' | ||
| + | 1389 если (! file_exists ($ file )) { | ||
| + | 1390 // | ||
| + | 1391 $ file = $ path . ' | ||
| + | 1392 } | ||
| + | 1393 } | ||
| + | 1394 вернуть $ файл ; | ||
| + | 1395} | ||
| + | 1396 | ||
| + | 1397/** | ||
| + | 1398* выводит «основной контент» во всплывающем окне медиаменеджера | ||
| + | 1399* | ||
| + | 1400* В зависимости от действий пользователя это может быть список | ||
| + | 1401* файлы в пространстве имен, диалоговое окно редактирования метаданных или | ||
| + | 1402* сообщение о ссылках на страницы | ||
| + | 1403* | ||
| + | 1404* Разрешено только в mediamanager.php | ||
| + | 1405* | ||
| + | 1406* @triggers МЕДИАМЕНЕДЖЕР_КОНТЕНТ_ВЫВОД | ||
| + | 1407* @param | ||
| + | 1408* @param | ||
| + | 1409* | ||
| + | 1410* @автор Андреас Гор < | ||
| + | 1411*/ | ||
| + | 1412функция | ||
| + | 1413{ | ||
| + | 1414 глобальный $ IMG ; | ||
| + | 1415 глобальная $ AUTH ; | ||
| + | 1416 глобальный $ INUSE ; | ||
| + | 1417 глобальный $ NS ; | ||
| + | 1418 глобальный $ JUMPTO ; | ||
| + | 1419 /** @var Вход $INPUT */ | ||
| + | 1420 глобальный $ ВХОД ; | ||
| + | 1421 | ||
| + | 1422 $ do = $ INPUT -> extract ( ' | ||
| + | 1423 если ( in_array ( $ do , [ ' | ||
| + | 1424 | ||
| + | 1425 если (!$ сделать ) { | ||
| + | 1426 если ($ INPUT -> bool ( ' | ||
| + | 1427 $ do = ' | ||
| + | 1428 } elseif ( is_array ($ INUSE )) { | ||
| + | 1429 $ do = ' | ||
| + | 1430 } еще { | ||
| + | 1431 $ do = ' | ||
| + | 1432 } | ||
| + | 1433 } | ||
| + | 1434 | ||
| + | 1435 // выводим панель содержимого, | ||
| + | 1436 если (!$ fromajax ) echo '< | ||
| + | 1437 $ данные = [ ' | ||
| + | 1438 $ evt = новое | ||
| + | 1439 если ($ evt -> advice_before ()) { | ||
| + | 1440 $ do = $ data [ ' | ||
| + | 1441 если ($ do == ' | ||
| + | 1442 media_filesinuse ($ INUSE , $ IMG ); | ||
| + | 1443 } elseif ($ do == ' | ||
| + | 1444 media_filelist ($ NS , $ AUTH , $ JUMPTO , false , $ sort ); | ||
| + | 1445 } elseif ($ do == ' | ||
| + | 1446 media_searchlist ($ INPUT -> str ( ' | ||
| + | 1447 } еще { | ||
| + | 1448 msg ( ' | ||
| + | 1449 } | ||
| + | 1450 } | ||
| + | 1451 $ evt -> advice_after (); | ||
| + | 1452 снято ($ evt ); | ||
| + | 1453 если (!$ fromajax ) echo '</ | ||
| + | 1454} | ||
| + | 1455 | ||
| + | 1456/** | ||
| + | 1457* Печатает центральный столбец в полноэкранном медиа-менеджере | ||
| + | 1458* В зависимости от открытой вкладки это может быть список | ||
| + | 1459* файлы в пространстве имен, форма загрузки или форма поиска | ||
| + | 1460* | ||
| + | 1461* @author Катя Арзамасцева < | ||
| + | 1462*/ | ||
| + | 1463функция | ||
| + | 1464{ | ||
| + | 1465 глобальная $ AUTH ; | ||
| + | 1466 глобальный $ NS ; | ||
| + | 1467 глобальный $ JUMPTO ; | ||
| + | 1468 глобальный $ lang ; | ||
| + | 1469 /** @var Вход $INPUT */ | ||
| + | 1470 глобальный $ ВХОД ; | ||
| + | 1471 | ||
| + | 1472 $ open_tab = $ INPUT -> str ( ' | ||
| + | 1473 если (!$ open_tab || ! in_array ($ open_tab , [ ' | ||
| + | 1474 если ($ INPUT -> str ( ' | ||
| + | 1475 | ||
| + | 1476 echo '< | ||
| + | 1477 | ||
| + | 1478 media_tabs_files ($ opened_tab ); | ||
| + | 1479 | ||
| + | 1480 echo '< | ||
| + | 1481 эхо | ||
| + | 1482 $ tabTitle = $ NS ?: ' | ||
| + | 1483 printf ($ lang [ ' | ||
| + | 1484 эхо | ||
| + | 1485 если ($ open_tab === ' | ||
| + | 1486 параметры_файлов_вкладки_медиа (); | ||
| + | 1487 } | ||
| + | 1488 эхо | ||
| + | 1489 | ||
| + | 1490 echo '< | ||
| + | 1491 если ($ open_tab == ' | ||
| + | 1492 media_tab_files ($ NS , $ AUTH , $ JUMPTO ); | ||
| + | 1493 } elseif ($ opened_tab == ' | ||
| + | 1494 media_tab_upload ($ NS , $ AUTH , $ JUMPTO ); | ||
| + | 1495 } elseif ($ open_tab == ' | ||
| + | 1496 media_tab_search ($ NS , $ AUTH ); | ||
| + | 1497 } | ||
| + | 1498 эхо | ||
| + | 1499} | ||
| + | 1500 | ||
| + | 1501/** | ||
| + | 1502* Печатает третий столбец в полноэкранном медиа-менеджере | ||
| + | 1503* В зависимости от открытой вкладки это могут быть сведения о | ||
| + | 1504* выбранный файл, диалоговое окно редактирования метаданных или | ||
| + | 1505* список ревизий файлов | ||
| + | 1506* | ||
| + | 1507* @param | ||
| + | 1508* @param | ||
| + | 1509* | ||
| + | 1510* @author Катя Арзамасцева < | ||
| + | 1511*/ | ||
| + | 1512функция | ||
| + | 1513{ | ||
| + | 1514 глобальный $ conf , $ DEL , $ lang ; | ||
| + | 1515 /** @var Вход $INPUT */ | ||
| + | 1516 глобальный $ ВХОД ; | ||
| + | 1517 | ||
| + | 1518 $ удалено = ( | ||
| + | 1519 ! file_exists ( mediaFN ($ image )) && | ||
| + | 1520 file_exists ( mediaMetaFN ($ image , ' | ||
| + | 1521 $ conf [ ' | ||
| + | 1522 ); | ||
| + | 1523 если (!$ image || (! file_exists ( mediaFN ($ image )) && !$ removed ) || $ DEL ) return ; | ||
| + | 1524 если ($ rev && ! file_exists ( mediaFN ( $ image , $ rev ))) $ rev = false ; | ||
| + | 1525 $ ns = getNS ($ image ); | ||
| + | 1526 $ do = $ INPUT -> str ( ' | ||
| + | 1527 | ||
| + | 1528 $ open_tab = $ INPUT -> str ( ' | ||
| + | 1529 | ||
| + | 1530 $ tab_array = [ ' | ||
| + | 1531 [, $ mime ] = mimetype ($ image ); | ||
| + | 1532 если ($ mime == ' изображение / jpeg ' ) { | ||
| + | 1533 $ tab_array [] = ' | ||
| + | 1534 } | ||
| + | 1535 если ($ conf [ ' | ||
| + | 1536 $ tab_array [] = ' | ||
| + | 1537 } | ||
| + | 1538 | ||
| + | 1539 если (!$ open_tab || ! in_array ($ open_tab , $ tab_array )) $ open_tab = ' | ||
| + | 1540 если ($ INPUT -> bool ( ' | ||
| + | 1541 если ($ do == ' | ||
| + | 1542 | ||
| + | 1543 media_tabs_details ($ image , $ opened_tab ); | ||
| + | 1544 | ||
| + | 1545 echo '< | ||
| + | 1546 [$ ext ] = mimetype ($ image , false ); | ||
| + | 1547 $ class = preg_replace ( '/ | ||
| + | 1548 $ class = ' | ||
| + | 1549 | ||
| + | 1550 $ атрибуты = $ rev ? [ ' | ||
| + | 1551 $ tabTitle = sprintf ( | ||
| + | 1552 '< | ||
| + | 1553 мл ($ изображение , $ атрибуты ), | ||
| + | 1554 $ класс , | ||
| + | 1555 $ lang [ ' | ||
| + | 1556 $ изображение | ||
| + | 1557 ); | ||
| + | 1558 если ($ open_tab === ' | ||
| + | 1559 printf ($ lang [ ' | ||
| + | 1560 } еще { | ||
| + | 1561 printf ($ lang [ ' | ||
| + | 1562 } | ||
| + | 1563 | ||
| + | 1564 echo '</ | ||
| + | 1565 | ||
| + | 1566 echo '< | ||
| + | 1567 | ||
| + | 1568 если ($ open_tab == ' | ||
| + | 1569 media_tab_view ($ image , $ ns , null , $ rev ); | ||
| + | 1570 } elseif ($ opening_tab == ' | ||
| + | 1571 media_tab_edit ($ image , $ ns ); | ||
| + | 1572 } elseif ($ opened_tab == ' | ||
| + | 1573 media_tab_history ($ image , $ ns ); | ||
| + | 1574 } | ||
| + | 1575 | ||
| + | 1576 эхо | ||
| + | 1577} | ||
| + | 1578 | ||
| + | 1579/** | ||
| + | 1580* выводит дерево пространства имен во всплывающем окне медиаменеджера | ||
| + | 1581* | ||
| + | 1582* Разрешено только в mediamanager.php | ||
| + | 1583* | ||
| + | 1584* @автор Андреас Гор < | ||
| + | 1585*/ | ||
| + | 1586функция | ||
| + | 1587{ | ||
| + | 1588 глобальный $ NS ; | ||
| + | 1589 эхо | ||
| + | 1590 media_nstree ($ NS ); | ||
| + | 1591 эхо | ||
| + | 1592} | ||
| + | 1593 | ||
| + | 1594/** | ||
| + | 1595* Распечатать выпадающее меню со всеми действиями DokuWiki | ||
| + | 1596* | ||
| + | 1597* Примечание: | ||
| + | 1598* | ||
| + | 1599* @param | ||
| + | 1600* @param | ||
| + | 1601* | ||
| + | 1602* @автор Андреас Гор < | ||
| + | 1603* @deprecated 2017-09-01 см. devel:menus | ||
| + | 1604*/ | ||
| + | 1605функция | ||
| + | 1606{ | ||
| + | 1607 dbg_deprecated ( 'см. devel: | ||
| + | 1608 $ menu = new MobileMenu (); | ||
| + | 1609 echo $ menu -> getDropdown ($ empty , $ button ); | ||
| + | 1610} | ||
| + | 1611 | ||
| + | 1612/** | ||
| + | 1613* Распечатать информационную строку об использованной лицензии | ||
| + | 1614* | ||
| + | 1615* @param | ||
| + | 1616* @param | ||
| + | 1617* @param | ||
| + | 1618* @param | ||
| + | 1619* @возвращаемая | ||
| + | 1620* | ||
| + | 1621* @автор Андреас Гор < | ||
| + | 1622*/ | ||
| + | 1623функция | ||
| + | 1624{ | ||
| + | 1625 глобальная лицензия $ ; | ||
| + | 1626 глобальная $ conf ; | ||
| + | 1627 глобальный $ lang ; | ||
| + | 1628 если (!$ conf [ ' | ||
| + | 1629 если (! is_array ($ license [$ conf [ ' | ||
| + | 1630 $ lic = $ license [$ conf [ ' | ||
| + | 1631 $ target = ($ conf [ ' | ||
| + | 1632 | ||
| + | 1633 $ out = '' | ||
| + | 1634 если ($ wrap ) $ out .= '< | ||
| + | 1635 если ($ img ) { | ||
| + | 1636 $ src = license_img ($ img ); | ||
| + | 1637 если ($ ист ) { | ||
| + | 1638 $ out .= '<a href="' | ||
| + | 1639 $ out .= '>< | ||
| + | 1640 если (!$ imgonly ) $ out .= ' ' ; | ||
| + | 1641 } | ||
| + | 1642 } | ||
| + | 1643 если (!$ imgonly ) { | ||
| + | 1644 $ out .= $ lang [ ' | ||
| + | 1645 $ out .= '< | ||
| + | 1646 $ out .= '>' | ||
| + | 1647 } | ||
| + | 1648 если ($ wrap ) $ out .= '</ | ||
| + | 1649 | ||
| + | 1650 если ($ return ) вернуть $ out ; | ||
| + | 1651 вывести $ ; | ||
| + | 1652 | ||
| + | 1653} | ||
| + | 1654 | ||
| + | 1655/** | ||
| + | 1656* Включает визуализированный HTML-код указанной страницы | ||
| + | 1657* | ||
| + | 1658* Эта функция полезна для заполнения боковых панелей или подобных функций в | ||
| + | 1659* шаблон | ||
| + | 1660* | ||
| + | 1661* @param | ||
| + | 1662* @param | ||
| + | 1663* @param | ||
| + | 1664* @param | ||
| + | 1665* @return | ||
| + | 1666*/ | ||
| + | 1667функция | ||
| + | 1668{ | ||
| + | 1669 если ($ распространять ) { | ||
| + | 1670 $ pageid = page_findnearest ($ pageid , $ useacl ); | ||
| + | 1671 } elseif ($ useacl && auth_quickaclcheck ($ pageid ) == AUTH_NONE ) { | ||
| + | 1672 вернуть | ||
| + | 1673 } | ||
| + | 1674 если (!$ pageid ) вернуть | ||
| + | 1675 | ||
| + | 1676 глобальный $ TOC ; | ||
| + | 1677 $ oldtoc = $ TOC ; | ||
| + | 1678 $ html = p_wiki_xhtml ($ pageid , '' | ||
| + | 1679 $ TOC = $ oldtoc ; | ||
| + | 1680 | ||
| + | 1681 если ($ print ) echo $ html ; | ||
| + | 1682 вернуть $ html ; | ||
| + | 1683} | ||
| + | 1684 | ||
| + | 1685/** | ||
| + | 1686* Отобразить форму подписки | ||
| + | 1687* | ||
| + | 1688* @автор Адриан Лэнг < | ||
| + | 1689* @устаревший 2020-07-23 | ||
| + | 1690*/ | ||
| + | 1691функция | ||
| + | 1692{ | ||
| + | 1693 dbg_deprecated ( Подписаться :: класс . ':: | ||
| + | 1694 ( новая | ||
| + | 1695} | ||
| + | 1696 | ||
| + | 1697/** | ||
| + | 1698* Пытается отправить уже созданный контент прямо в браузер | ||
| + | 1699* | ||
| + | 1700* Оборачивает ob_flush() и flush() | ||
| + | 1701* | ||
| + | 1702* @автор Андреас Гор < | ||
| + | 1703*/ | ||
| + | 1704функция | ||
| + | 1705{ | ||
| + | 1706 если ( ob_get_level () > 0 ) ob_flush (); | ||
| + | 1707 румянец (); | ||
| + | 1708} | ||
| + | 1709 | ||
| + | 1710/** | ||
| + | 1711* Пытается найти файл ресурсов в указанных местах. | ||
| + | 1712* | ||
| + | 1713* Если указанное местоположение начинается с двоеточия, | ||
| + | 1714* файл, в противном случае предполагается, | ||
| + | 1715* | ||
| + | 1716* @параметр | ||
| + | 1717* @param | ||
| + | 1718* @param | ||
| + | 1719* @param | ||
| + | 1720* требуется ложный результат | ||
| + | 1721* @возвращаемая | ||
| + | 1722* | ||
| + | 1723* @автор Андреас Гор < | ||
| + | 1724*/ | ||
| + | 1725функция | ||
| + | 1726{ | ||
| + | 1727 $ img = '' | ||
| + | 1728 $ файл = '' | ||
| + | 1729 $ ismedia = false ; | ||
| + | 1730 // перебираем кандидатов, | ||
| + | 1731 foreach ($ поиск | ||
| + | 1732 если ( str_starts_with ($ img , ':' | ||
| + | 1733 $ file = mediaFN ($ img ); | ||
| + | 1734 $ ismedia = true ; | ||
| + | 1735 } еще { | ||
| + | 1736 $ file = tpl_incdir () . $ img ; | ||
| + | 1737 $ ismedia = false ; | ||
| + | 1738 } | ||
| + | 1739 | ||
| + | 1740 если ( file_exists ($ file )) прерывание ; | ||
| + | 1741 } | ||
| + | 1742 | ||
| + | 1743 // управлять несуществующей целью | ||
| + | 1744 если (! file_exists ($ file )) { | ||
| + | 1745 // дать результат для резервного изображения | ||
| + | 1746 если ($ откат ) { | ||
| + | 1747 $ file = DOKU_INC . ' lib / images / blank.gif ' ; | ||
| + | 1748 // остановить процесс, | ||
| + | 1749 } еще { | ||
| + | 1750 вернуть | ||
| + | 1751 } | ||
| + | 1752 } | ||
| + | 1753 | ||
| + | 1754 // извлечь данные изображения, | ||
| + | 1755 если (! is_null ($ imginfo )) { | ||
| + | 1756 $ imginfo = getimagesize ($ file ); | ||
| + | 1757 } | ||
| + | 1758 | ||
| + | 1759 // создать URL | ||
| + | 1760 если ($ ismedia ) { | ||
| + | 1761 $ url = ml ($ img , '' | ||
| + | 1762 } еще { | ||
| + | 1763 $ url = tpl_basedir (). $ изображение ; | ||
| + | 1764 если ($ abs ) $ url = DOKU_URL.substr ( $ url , strlen ( DOKU_REL )) | ||
| + | ; | ||
| + | 1766 | ||
| + | 1767 вернуть $ url ; | ||
| + | 1768} | ||
| + | 1769 | ||
| + | 1770/** | ||
| + | 1771* PHP включает файл | ||
| + | 1772* | ||
| + | 1773* либо из каталога conf, если он существует, | ||
| + | 1774* файл в корневом каталоге шаблона. | ||
| + | 1775* | ||
| + | 1776* Функция учитывает настройки каскада конфигураций и ищет заданные | ||
| + | 1777* файл рядом с «основными» файлами конфигурации, | ||
| + | 1778* по умолчанию. | ||
| + | 1779* | ||
| + | 1780* Примечание: | ||
| + | 1781* к этой функции! | ||
| + | 1782* | ||
| + | 1783* @param | ||
| + | 1784* | ||
| + | 1785* @автор Андреас Гор < | ||
| + | 1786* @автор Аника Хенке < | ||
| + | 1787*/ | ||
| + | 1788функция | ||
| + | 1789{ | ||
| + | 1790 глобальный $ config_cascade ; | ||
| + | 1791 foreach ([ ' | ||
| + | 1792 если ( пусто ($ config_cascade [ ' | ||
| + | 1793 foreach ($ config_cascade [ ' | ||
| + | 1794 $ dir = имя_каталога ($ conf_file ); | ||
| + | 1795 если ( file_exists ( " $ dir / $ file " )) { | ||
| + | 1796 include ( " $ dir / $ file " ); | ||
| + | 1797 возвращаться ; | ||
| + | 1798 } | ||
| + | 1799 } | ||
| + | 1800 } | ||
| + | 1801 | ||
| + | 1802 // все еще здесь? попробуйте шаблон dir | ||
| + | 1803 $ file = tpl_incdir () . $ file ; | ||
| + | 1804 если ( file_exists ($ file )) { | ||
| + | 1805 включить ($ файл ); | ||
| + | 1806 } | ||
| + | 1807} | ||
| + | 1808 | ||
| + | 1809/** | ||
| + | 1810* Возвращает тег < | ||
| + | 1811* | ||
| + | 1812* @param | ||
| + | 1813* @возвращаемая | ||
| + | 1814* | ||
| + | 1815* @автор Аника Хенке < | ||
| + | 1816*/ | ||
| + | 1817функция | ||
| + | 1818{ | ||
| + | 1819 | ||
| + | 1820 $ return = '' | ||
| + | 1821 | ||
| + | 1822 foreach ($ типы | ||
| + | 1823 переключатель ($ тип ) { | ||
| + | 1824 случай | ||
| + | 1825 $ look = [ ': | ||
| + | 1826 $ return .= '< | ||
| + | 1827 перерыв ; | ||
| + | 1828 случай | ||
| + | 1829 $ look = [ ': | ||
| + | 1830 $ return .= '< | ||
| + | 1831 перерыв ; | ||
| + | 1832 случай | ||
| + | 1833 // идеальное решение, | ||
| + | 1834 $ look = [ ': | ||
| + | 1835 $ return .= '< | ||
| + | 1836 перерыв ; | ||
| + | 1837 } | ||
| + | 1838 } | ||
| + | 1839 | ||
| + | 1840 возврат $ возврат ; | ||
| + | 1841} | ||
| + | 1842 | ||
| + | 1843/** | ||
| + | 1844* Печать полноэкранного медиа-менеджера | ||
| + | 1845* | ||
| + | 1846* @author Катя Арзамасцева < | ||
| + | 1847*/ | ||
| + | 1848функция | ||
| + | 1849{ | ||
| + | 1850 глобальные $ NS , $ IMG , $ JUMPTO , $ REV , $ lang , $ fullscreen , $ INPUT ; | ||
| + | 1851 $ полноэкранный = правда ; | ||
| + | 1852 require_once | ||
| + | 1853 | ||
| + | 1854 $ rev = '' | ||
| + | 1855 $ image = cleanID ($ INPUT -> str ( ' | ||
| + | 1856 если ( isset ($ IMG )) $ image = $ IMG ; | ||
| + | 1857 если ( isset ($ JUMPTO )) $ image = $ JUMPTO ; | ||
| + | 1858 если ( isset ($ REV ) && !$ JUMPTO ) $ rev = $ REV ; | ||
| + | 1859 | ||
| + | 1860 echo '< | ||
| + | 1861 эхо | ||
| + | 1862 html_msgarea (); | ||
| + | 1863 | ||
| + | 1864 echo '< | ||
| + | 1865 echo '< | ||
| + | 1866 echo '< | ||
| + | 1867 echo $ lang [ ' | ||
| + | 1868 эхо | ||
| + | 1869 | ||
| + | 1870 echo '< | ||
| + | 1871 media_nstree ($ NS ); | ||
| + | 1872 эхо | ||
| + | 1873 эхо | ||
| + | 1874 | ||
| + | 1875 echo '< | ||
| + | 1876 tpl_mediaFileList (); | ||
| + | 1877 эхо | ||
| + | 1878 | ||
| + | 1879 echo '< | ||
| + | 1880 echo '< | ||
| + | 1881 tpl_mediaFileDetails ($ image , $ rev ); | ||
| + | 1882 эхо | ||
| + | 1883 | ||
| + | 1884 эхо | ||
| + | 1885} | ||
| + | 1886 | ||
| + | 1887/** | ||
| + | 1888* Возвращаем полезные классы макета | ||
| + | 1889* | ||
| + | 1890* @возвращаемая | ||
| + | 1891* | ||
| + | 1892* @автор Аника Хенке < | ||
| + | 1893*/ | ||
| + | 1894функция | ||
| + | 1895{ | ||
| + | 1896 глобальные $ ACT , $ conf , $ ID , $ INFO ; | ||
| + | 1897 /** @var Вход $INPUT */ | ||
| + | 1898 глобальный $ ВХОД ; | ||
| + | 1899 | ||
| + | 1900 $ классы = [ | ||
| + | 1901 ' | ||
| + | 1902 ' | ||
| + | 1903 ' | ||
| + | 1904 $ INPUT -> сервер -> bool ( ' | ||
| + | 1905 ( isset ($ INFO [ ' | ||
| + | 1906 ($ ID == $ conf [ ' | ||
| + | 1907 ]; | ||
| + | 1908 return | ||
| + | 1909} | ||
| + | 1910 | ||
| + | 1911/** | ||
| + | 1912* Создать событие для меню инструментов | ||
| + | 1913* | ||
| + | 1914* @param | ||
| + | 1915* @param | ||
| + | 1916* @param | ||
| + | 1917* | ||
| + | 1918* @автор Аника Хенке < | ||
| + | 1919* @deprecated 2017-09-01 см. devel:menus | ||
| + | 1920*/ | ||
| + | 1921функция | ||
| + | 1922{ | ||
| + | 1923 dbg_deprecated ( 'см. devel: | ||
| + | 1924 $ data = [ ' | ||
| + | 1925 | ||
| + | 1926 $ hook = ' | ||
| + | 1927 $ evt = новое | ||
| + | 1928 если ($ evt -> advice_before ()) { | ||
| + | 1929 foreach ($ evt -> data [ ' | ||
| + | 1930 } | ||
| + | 1931 $ evt -> advice_after (); | ||
| + | 1932} | ||
| + | 1933 | ||
| + | </ | ||
| + | </ | ||
wiki/xref/dokuwiki/inc/template.php.1724622865.txt.gz · Последнее изменение: — vladpolskiy
