Инкубатор идей
Здесь находятся Cырые и Дохлые Идеи. Сырые ещё недостаточно хорошо продуманы, чтобы приступить к реализации. Дохлые когда-то были Сырыми, но мы не поняли этого во-время.
Отдельно описанные задачи:
Краткие идеи
phBlockquote.less
Дизайн(ы) для оформления цитат:
<blockquote>
Красивая цитата привлекает внимание пользователей и неплохо разбивает повествование.
<cite>мысль Finar</cite>
</blockquote>
Ранее предлагалось использовать вот такой phBlockquote.less
/* ДАННЫЙ ФАЙЛ СОДЕРЖИТ СТИЛИ ДЛЯ РЕЦЕПТА PmWikiPh/Blockquote */
/* ПОВТОРЕНИЕ ПЕРЕМЕННЫХ из variables.less (зачем? см. PmWikiPh/PmWikiPh )
Если эти переменные не определены ранее и файл не компилируется, раскомментируйте.
@gray-base: #000;
// @gray-darker: lighten(@gray-base, 13.5%); // #222
// @gray-dark: lighten(@gray-base, 20%); // #333
// @gray: lighten(@gray-base, 33.5%); // #555
@gray-light: lighten(@gray-base, 46.7%); // #777
@gray-lighter: lighten(@gray-base, 93.5%); // #eee
@border-radius-base: 4px;
*/
blockquote {
min-height: 20px;
padding: 19px;
border: 1px solid @gray-lighter;
border-left: 10px solid @gray-lighter;
margin: 10px 0 10px 50px;
border-radius: @border-radius-base;
box-shadow: 0 1px 5px rgba(0,0,0,.5);
&:before {
display: block;
float: left;
height: 0px;
content: "«";
margin-left: -90px;
line-height: 0;
font-size: 600%;
font-style: italic;
text-shadow: 0px 0px 3px rgba(32, 32, 32, 0.3);
color: @gray-lighter;
}
cite {
display: block;
color: @gray-light;
margin-top: 20px;
text-align: right;
}
}
SitemapsPack
Рецепт предлагал несколько вариантов генерации Карт Сайта для режима редактирования. Суть в том, чтобы представить карту сайта максимально компактно и масштабируемо, чтобы можно было вставлять ссылки на статьи в режиме редактирования.
Выглядело это так:
Рецепт был удален 2021-05-24 и из ядра, и вообще. Причина — верстка была в виде смеси HTML + вики, а CSS в виде LESS. Парадигма изменилась, проще переделать с нуля.
Всё это было придумано не только именно для Карт Сайта, а, например, чтобы при редактировании статьи выводить связанные с данной статьей материалы. Это удобно при создании хорошо-перелинкованных материалов в рамках одной темы.
Например:
- несложно будет запрогаммировать листинг текущей Группы, чтобы прямо из режима редактирования статьи ссылаться на соседние
- или вывести список статей, которые ссылаются на текущую
- или вывести список статей, которые написал текущий автор
- или вывести список статей из другой группы,
$BaseNameкоторых совпадает с данным - и т.д., и т.п…
iframe
Лучше всего было бы встроить ph-speedups.less в ThisSite/Syntax-Skin через iframe. Но iframe почему-то не поддерживаются!
Что с этим можно сделать?
- создать необходимую PHP-переменную или PV с кодом нужного iframe в editMode.php
- создать нормальный синтаксис iframe вида
(:iframe %URL% :). Либо простенько с нуля, либо полнофункционально на базе вот этого рецепта: https://www.pmwiki.org/wiki/Cookbook/IncludeSite - использовать phBruteFileLister.php , в котором читать нужный нам файл. В таком случае можно еще и подсветку синтаксиса сделать.
- если это делать, то через ajax… как-то костыльно. С другой стороны, можно расширить концепцию и сделать возможность полноценно редактировать LESS/CSS код сайта прямо с него же с подсветкой синтаксиса.
.hidden-for-users ИЛИ класс .admin
Сделать такой класс, .hidden-for-users - "скрывает элемент от неавторизованных пользователей".
Либо более комлексный подход. Например:
.hide-for-readers .hide-for-editors .hide-for-admin .show-for-readers .show-for-editors .show-for-admin
Но необходимость всего этого не очевидна. Возможно, стоит просто сделать класс .admin, который всё что угодно делает видимым только Админу.
Если делать класс .admin, следует учесть вот ещё что:
>>admin<< >><<
будет генерить
<div> </div>
поэтому, если внутри будет какой-то программинг, при определенных обстоятельствах выдающий NULL, &:empty {display: none;} не сработает, а хотелось бы! Чтобы это обойти, можно не делать класс, а вместо этого расширить синтаксис вот такой командой :
@admin@ код-код @@
Создание пользовательского JS или CSS-кода для страницы
Старое и кривое решение (deprecated)
- добавьте в конфигурационный массив рецепта FieldProcessing (создание полей) следующий элемент:
'CustomHeadCode' => 'textarea' - добавьте в EditForm
input e_CustomHeadCodeрядом с существующими элементами форм. Можете пометить его как-то, что, мол, поле только для программистов- обратите внимание, двойные кавычки не поддерживаются! Не знаю, как решить эту проблему, нам пока не бывало это нужно
- во все макеты дизайна, которые вы используете, перед закрывающим тегом
</head>вставьте код<!--markup:(:html:){$CustomHeadCode}(:htmlend:)--> - все, должно заработать!
Скорее всего, следует сделать немножко не так: в FieldProcessing (создание полей) добавить функцию, аргументом которой является ИмяПоля. Функция просто возвращает значение поля (заменив в нём спецсимволы). Таким образом, с помощью <!--function:FunctionName ИмяПоля--> можно будет неоднократно в любом месте tmpl-макета возвращать значение любого поля… Расширяя, лучше бы ещё дописать callback-вызов, чтобы, если таковая существует, вместо простого возврата значения вызывалась ещё одна функция ИмяПоля_processing(ИмяПоля). Таким образом, можно было бы делать собственные обработчики информации, хранящейся в полях.

