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 · Последнее изменение: 2024/08/26 00:54 — vladpolskiy