LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
27.05.2012, 11:11:10 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Пустые строки при сохранении картинок в материале  (Прочитано 1411 раз)
0 Пользователей и 1 Гость смотрят эту тему.
john.deff
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 129



« : 25.08.2011, 00:25:14 »

==============Моя система=============================================
=====================================================================
Версия базы данных:    5.0.51a-24+lenny5
Версия PHP:    5.2.6-1+lenny10
Веб-сервер:    Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny10 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g
Интерфейс между веб-сервером и PHP:    apache2handler
Версия Joostina!:    Joostina 1.3.0.4::837 build. [ ] 14:01:2011 01:57 +5 GMT
Браузер (User Agent):    Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20100101 Firefox/6.0
=====================================================================
Вопрос:
"Разъезжаются" картинки в статьях - после сохранения.

Т.е. после сохранения материала, при следующем его открытии видим, что расстояние между отобранными для данного материала картинками - в окошке "Картинки материала" - увеличилось.

Сначала между картинками появляется один пустой интервал - как пустое место для картинки. (его можно удалять.)
После второго сохранения материала между картинками - 3 пустых места.
После третьего сохранения - 7 пустых интервалов.
После четвертого - 15...
Наверное, дальше в такой же прогрессии (в два раза больше интервалов становится).

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

Кто знает, в чем может быть дело - подскажите! Как исправить?
Записан
john.deff
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 129



« Ответ #1 : 28.08.2011, 17:21:54 »

Сложная попалась задачка?

заметил такую особенность:
Создаем новый материал, выбираем источник фоток и указываем движку какие показать, нажимаем "Применить", то все четко работает!
Если выходим из редактируемого материала или нажимаем кнопку "Сохранить", опять все работает как надо, НО
если мы зайдем опять в этот материал и нажмем "Применить" или "Сохранить", то вот на этом этапе и возникает глюк!
исправить его можно лишь очисткой поля где мы указываем CMS какие фотки отображать и заново выбрать источник и снова указать CMS какие фото надо отображать..

это ошибка CMS Joostina.


===
Проблема актуальна! помогите
« Последнее редактирование: 01.09.2011, 13:35:56 от john.deff » Записан
john.deff
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 129



« Ответ #2 : 04.09.2011, 02:16:32 »

 Tongue надоело мне ждать у моря погоды!

поковырял я код, ничего умного не нашел, кроме как запутанного клубка кода
в итоге решил хоть и "не красиво"  Cool но дописать код так, чтоб работало как надо.

РЕШЕНИЕ

в файле admin.content.php находим 887 строку прямо перед switch($task) {
вставляем:

Код:
//////////////////////////////////////
$database->setQuery("SELECT images FROM #__content WHERE id='".$row->id."'");
$database->loadObject($rows_images);

foreach($rows_images as $temp_image){

$t_img = explode("\n", $temp_image);

$array_value = array();
foreach($t_img as $value){
if(trim($value)){
$array_value[] = $value;
}
}
}
$save_result = implode("\n", $array_value);
$database->setQuery("UPDATE #__content SET images='".$save_result."' WHERE id='".$row->id."'");
$database->query();
///////////////////////////////////////

теперь при сохранении материала, у нас картинки будут сохраняться как НАдо!
но при нажатии кнопки "Применить", будет опять шляпа
в файле admin.content.ajax.php находим строку 283 прямо перед mosCache::cleanCache('com_content');
вставляем тот же самый код:

Код:
//////////////////////////////////////
$database->setQuery("SELECT images FROM #__content WHERE id='".$row->id."'");
$database->loadObject($rows_images);

foreach($rows_images as $temp_image){

$t_img = explode("\n", $temp_image);

$array_value = array();
foreach($t_img as $value){
if(trim($value)){
$array_value[] = $value;
}
}
}
$save_result = implode("\n", $array_value);
$database->setQuery("UPDATE #__content SET images='".$save_result."' WHERE id='".$row->id."'");
$database->query();
///////////////////////////////////////

надеюсь конечно, что разработчики Joostina поправят когда нибудь данный косяк,,,
жду замечаний.. может кто найдет решение изящнее?!
Записан
mitulka
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 4


« Ответ #3 : 15.12.2011, 01:16:48 »

Ты гений! У меня сработало! Только я в admin.content.php строку switch($task) нашел в районе 770 строки. Наверное потому, что у меня Joomla 1.0.15 RE. А этого файла admin.content.ajax.php у себя вооще не нашел! Поменял только в первом файле и начало работать как при "сохранить" так и при "применить".
Спасибо огромное!
Записан
abeletsky
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 3


« Ответ #4 : 22.02.2012, 01:49:01 »

Можно и попроще, зачем же каждый раз запросы гонять...

Недавний коммит http://code.google.com/p/joostina/source/detail?r=900 устраняет эту проблему, правда, не особенно разбираясь в причинах происходящего :-).

Причина в том, что с некоторых пор браузеры стали обращать внимание на символы перевода строки (CR, LF) в атрибуте value тэга input. Поэтому с новыми браузерами Joostina в этом моменте дружить перестала. Точно знаю, что IE8 ещё работает, Firefox третьей ветки тоже. Как ни странно, работает последний Safari 5. Ещё более странно, что Chrome на том же WebKit уже глючит :-).

Мой вариант решения проблемы: в файле /components/com_content/content.php после строки (она там одна такая):

Код:
$row->images = explode("\n",$row->images);

дописываем:

Код:
foreach($row->images as $k => $im) $row->images[$k] = trim($im,"\n\r");

Такое же действие делаем в файле /administrator/components/com_content/admin.content.php

По уму надо просто делать explode по "\r\n", но на практике оказалось, что в базе полно записей в обычным "\n" в качестве разделителя строк...
Записан
Gold Dragon
Moderator
*****

Репутация: +33/-2
Offline Offline

Пол: Мужской
Сообщений: 985



« Ответ #5 : 22.02.2012, 09:49:03 »

может тогда это применить
Код:
$row->images = preg_replace("/\s/", "", $row->images);
Так мы избавимся от любого пробельного символа
Записан
abeletsky
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 3


« Ответ #6 : 22.02.2012, 11:32:43 »

explode необходим, поскольку код далее оперирует массивом изображений.

Далее, строки изображений иногда разделяются "\r\n", а explode делается только по "\n". Поэтому проблема, фактически, в единственном символе "\r" в конце каждого элемента массива. trim символа "\n" сделал "на всякий пожарный". Убирать все пробелы в строке считаю опасным. Я не изучал подробно код формирования этих строк --- вдруг там могут быть пробелы или табуляции? Например, пробел в имени файла?

Кстати, разобрался, почему в базе часть строк разделяется "\n", а часть "\r\n". Первый вариант сохраняется при нажатии "Применить", при выполнеии ajax-запроса. Второй --- при нажатии "Сохранить", при обычном POST-запросе браузера.
Записан
Gold Dragon
Moderator
*****

Репутация: +33/-2
Offline Offline

Пол: Мужской
Сообщений: 985



« Ответ #7 : 22.02.2012, 11:55:06 »

так можно и так
Код:
$row->images = preg_split("/\s+/", $row->images);
Записан
abeletsky
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 3


« Ответ #8 : 22.02.2012, 12:57:27 »

Кстати да. Я бы написал только
Код:
$row->images = preg_split("/[\r\n]+/", $row->images);
В таком варианте и поле картинок чистить от пустых строк не нужно --- она со временем сама очистится.
Записан
Gold Dragon
Moderator
*****

Репутация: +33/-2
Offline Offline

Пол: Мужской
Сообщений: 985



« Ответ #9 : 22.02.2012, 13:03:13 »

ну тогда нужно потестить и внести изменения.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet