+3.88
Рейтинг
11.19
Сила

Вызов переменной из конфига плагина.

Утро доброе.

Бьюсь над созданием своего плагина для 0.4.2. Не могу справиться с проблемой, как из файла конфига плагина вызвать переменную в шаблон. Код по катом.
Читать дальше →

Способ искоренить Config::Set в конфигах плагинов

Задача: при выполнении ветви конфига через include исключить изменение текущего конфига

сделал у себя так:
Index: Config.class.php
===================================================================
--- Config.class.php	(revision 50)
+++ Config.class.php	(revision 119)
@@ -271,9 +271,25 @@
 	 */
 	static public function Set($sKey,$value,$sInstance=self::DEFAULT_CONFIG_INSTANCE) {
 		$aKeys=explode('.',$sKey);
+		
+		if(isset($value['$root$']) && is_array($value['$root$'])){
+			$aRoot = $value['$root$'];
+			unset($value['$root$']);
+			foreach($aRoot as $sRk => $mRv){
+				self::Set(
+					$sRk,
+					self::isExist($sRk)
+						? func_array_merge_assoc(Config::Get($sRk, $sInstance), $mRv)
+						: $mRv
+					,
+					$sInstance
+				);
+			}
+		}
+		
 		$sEval='self::getInstance($sInstance)->aConfig';
 		foreach ($aKeys as $sK) {
-			$sEval.='['.var_export($sK, true).']';
+			$sEval.='['.var_export((string)$sK, true).']';
 		}
 		$sEval.='=$value;';
 		eval($sEval);	


теперь чтобы получить доступ к корню глобального конфига из конфига плагина, надо просто добавить префикс "$root$"

например, для того чтобы сказать роутеру о новом экшне, вместо не православного Config::Set в конфиге плагина page можно написать православное
$config['$root$']['router']['page']['page']	= 'PluginPage_ActionPage';

Печать топика

Давайте посоветуемся, кто как видит функцию печати топика

есть 3 пути:
1. создаем кастомный стиль для media=print, скрывающий всё лишнее (всё кроме заголовка топика и его текста), и вставляем простой линк в каждом топике
a href="javascript: window.print()"

при этом можно сохранить нативные стили для содержимого топика

2. делаем специальный экшн с минималистичным шаблоном для топика и открываем по ссылке его в новом окне, у которого onload = window.print()

3. побаловался вчера немного и придумал еще один дурацкий метод, но очень быстрый. создаем новое окно динамически:

<script>
function printtopic(index){
 var title = $$('.topic .title')[index].get('text');
 var content = $$('.topic .content')[index].get('html');
 var win = window.open();
 win.onload = function (){ setTimeout('window.print()',2000);};
 var windoc = win.document;
 windoc.write(new Element('div').adopt(new Element('h1', {'text':title}), new Element('div', {'html':content})).get('html'));
}
</script>


ссылка для печати:
<a href="javascript:printtopic(0)">печать</a>

Настройка Tiny_MCE

В свое время долго мучался с редактором TinyMCE, который идет в стандартной сборке ЛС-а. По роду деятельности я не программер, по этой причине пустяковые проблемы почти не имели решений, но все же я смог осилить настройку и изменение этого редкатора.

Чем моя сборка отличается от той, что в ЛС-е?
1. Корректная расстановка переносов строк;
2. Набор смайликов (не qip);
3. Нет глюка с заголовками;
4. Добавлено несколько кнопок;
5. При включении редактора не отключается стандартный в комментах;
Читать дальше →

Внутренний голос. По заявкам :)

Хабраклонирование по заявкам жаждущих :)
Итак, что же такое внутренний голос — пример можно посмотреть на… ну конечно, хабре.
А вот здесь написано зачем это нужно.
Читать дальше →