Внимание! Вышла новая версия hak_tinymce, читать Hak_tinymce 1.0
2 часть hak_tinymce вставка картинок
3 часть hak_tinymce вставка картинок
Изменений вроде сделал не так много, но вот подробное описание занимает достаточно много места и времени. По объему текста я не уложился в 2 страницы сайта. Наверно не такой талантливый я как Чехов А.П.
Напомню всем кто подзабыл - я делаю улучшение плагина hak_tinymce для вставки картинок. То есть если картинок очень много, то вставка их не очень то приятная процедура. Вот это я и решил подправить. Тут я немного похвастаюсь :) Клиенты которым я установил это исправления очень и очень довольны. Вот так выглядит окно вставки картинок после моего дополнения:
В предыдущих статьях я подробно описал изменения в CSS, HTML, JavaScript и рассмотрел добавленную функцию hak_txpcountselect. Функция hak_txpcountselect отвечает за вывод номеров страниц. Самое сложное (и не до конца отточено) в ней это не выйти за пределы ширины блока.
Далее:
Изменили функцию hak_txpcatselect. Теперь она содержит следующий код на PHP.
function hak_txpcatselect() {
$rs = getTree("root",'image');
if ($rs) {
echo tag(gTxt('category'),"legend").
treeSelectInput("category",$rs,"","txpCategory");
//Limit
echo "<div id=\"txpLimitimages\" style=\"margin-left:100px;margin-top:-28px\">";
echo "Lim-img:";
echo "<select id=\"txpLimitimg\" name=\"limimg\" size=\"1\">";
echo "<option value=\"All\">All</option>";
echo "<option selected value=\"10\">10</option>";
echo "<option value=\"20\">20</option>";
echo "<option value=\"30\">30</option>";
echo "<option value=\"40\">40</option>";
echo "<option value=\"50\">50</option>";
echo "</select>";
echo "<span id=\"widthlast\" style=\"visibility:hidden;\"><</span>";
echo "<span id=\"widthchar\" style=\"visibility:hidden;\">8</span>";
echo "</div>";
}
exit(0);
}
Функция очень простая и по сравнению с прошлой редакцией добавились две строчки которые вставляют в форму скрытые поля с символами, ширина которых необходима для правильно расчета в функции hak_txpcountselect.
Следующая измененная функция - hak_txpimage. Можете посмотреть полный код функции hak_txpimage.
Но изменения претерпели только начала функции:
$category = gps("c");
$category = (!empty($category)) ? "AND category='".$category."'" : "" ;
$limit_image = gps("limimg");
$limit_img_count = gps("limcount");
if ( (empty($limit_img_count)) || (!intval($limit_img_count)) ){
$limit_img_count = 0;
}
else { $limit_img_count = intval($limit_img_count) - 1; }
if (empty($limit_image)) { $limit_image = " LIMIT 10"; }
else {
if ($limit_image == "All") { $limit_image = ""; }
elseif (!intval($limit_image)) { $limit_image = " LIMIT 10"; }
else { $limit_image = " LIMIT ".$limit_img_count*$limit_image.",".$limit_image; };
}
$rs = safe_rows_start("*", "txp_image","1=1 ".$category." ORDER BY id DESC,category,name".$limit_image);
Все очень просто, составляем запрос к базе данных с учетом не только категории, но и лимита. В mySQL запрос select может содержать дополнительных параметр LIMIT X,Y где X показывает смещение - с какой записи начать вывод. А Y показывает сколько записей выводить.
На этом участке я хотел оптимизировать код PHP. Для этого я решил в HTML форме изменить раскрывающийся спискок с id="txpLimitimages". Первый элемент раскрывающегося списка стал таким: <option value="0">All</option> Таким образом я хотел упростить проверку параметра $limit_image, так как все параметры становятся числовыми. Но почему то при выборе пункта ALL в javascript передавался ноль, а в коде самого плагина hak_tinymce передавался пустой параметр и срабатывала проверка if (empty($limit_image)) Возможно это связано с кодом функции gps самой системы textpattern, но не стал разбираться и вернул старый испытанный код.
Всё. Когда я подправлю код, решу оставшиеся проблемы обязательно постараюсь отписать.
Внимание! Вышла новая версия hak_tinymce, читать Hak_tinymce 1.0
Вы можете скачать архив(tar) всех измененных файлов. Не забудьте сохранить свои файлы перед изменением!
Скачать: txpimage
Скачать: hak_tinymce.txt
P.S. Посмотрел описание функции empty: empty() возвращает FALSE если var принимает не пустое и не нулевое значение. Другими словами, если значение var не принимает "", 0, "0", NULL, FALSE, array(), и объекты с пустыми свойствами. В противном случае функция возвращает TRUE. Я ожидал другое поведение этой PHP функции, так как НОЛЬ это все таки не пусто! (ну я так привык :) )
Весь код доступен под лицензиями BSD, GPL2, GPL3, LGPL. Если Вам необходимо получить код под любой другой свободной лицензией прошу обращаться по адресу redduck@solo-line.ru.
Внимание! Всем кто скачал измененную версию hak_tinymce – прошу обратить внимание что появилась более свежея версия. Хотя, работает – не ремонтируй.
— Redduck · 4 августа 2011, 08:59 · #