Разбор строки аттача в системе UCOZ, второй скрипт

Скрипты

Разбор строки аттача в системе UCOZ, второй скрипт
оценка: 5.0 из 5
оценок: 2, отзывов: 2

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

Сам код скрипта:

Code

<script type="text/javascript" language="javascript"><!--
/*
// Скрипт разбора аттача в системе UCOZ
// Автор: Szen
// Сайт: http://szenprogs.ru/  
*/
function ParseAttach(){
  var sResult;
  var iNum;
  var mes = new String(document.getElementById('MyMessStr').innerHTML);
  var att = new String(document.getElementById('MyAttStr').innerHTML);
  var img_arr = new Array();
  var img_b_arr = new Array();
  var arrKWords = new Array('изображение ','изображении ',
  'изображением ','изображению ','изображения ',
  'Изображение ','Изображении ',
  'Изображением ','Изображению ','Изображения ',
  'рисунок ','рисунка ','рисунком ','рисунку ','рисунке ',
  'Рисунок ','Рисунка ','Рисунком ','Рисунку ','Рисунке ');
  var j = 0;
  mes = mes.replace(/</g,'<');
  mes = mes.replace(/>/g,'>');
  att = att.replace(/</g,'<');
  att = att.replace(/>/g,'>');
  att_arr = att.split(/<a /gi);
  for (var i = 0; i < att_arr.length; i++){
  var s = new String(att_arr[i]);
  s = s.toLowerCase();
  s = s.slice(s.indexOf('href='));
  s = s.slice(0,s.indexOf(' '));
  if (s.indexOf('href=') != -1){
  s = s.replace(/href=/gi,'');
  s = s.replace(/'/gi,'');
  s = s.replace(/"/gi,'');
  att_arr[i] = s;
  s = ':<br> <br> <center> <a href="%url%" target="_blank"> <img src="%url%" alt="Picture #%num%" border="0" width="400"> </a> </center> <br> <br>';
  s = s.replace(/%url%/gi,att_arr[i]);
  s = s.replace(/%num%/gi,j+1);
  img_arr[j] = s;
  img_b_arr[j] = '1';
  j++;
  } else {
  att_arr[i] = '';
  };
  };
   
  if (img_arr.length > 0){
  for(var i = 0; i < arrKWords.length; i++){
  sResult = new String('');
  while(mes.indexOf(arrKWords[i]) != -1){
  sResult = sResult + mes.substr(0,mes.indexOf(arrKWords[i]));
  mes = mes.slice(mes.indexOf(arrKWords[i]));
  s = new String(arrKWords[i]);
  j = s.length;
  s = '';
  while(!isNaN(mes.substr(j,1))){
  s = s + mes.substr(j,1);
  j++;
  };
  if(!isNaN(s)){iNum = new Number(s);} else {iNum = new Number(0);};
  if(iNum > 0 && iNum <= img_arr.length){
  sResult = sResult + arrKWords[i] + s + img_arr[iNum-1];
  img_b_arr[iNum-1] = '0';
  } else {
  sResult = sResult + arrKWords[i] + s;
  };
  s = arrKWords[i] + s;
  mes = mes.slice(s.length);
  };  
  sResult = sResult + mes;
  mes = sResult;
  };  
  mes = mes.replace('<NOSCRIPT>','');
  mes = mes.replace('</NOSCRIPT>','');
  s = '';
  for (var i = 0; i < img_b_arr.length; i++){
  if (img_b_arr[i] == '1'){
  j = i+1
  s = s + 'Pic' + (j) + img_arr[i];
  };
  };
  if (s != ''){mes = mes + '<hr class="eLine"><h3>Приложение</h3>'+s;}
  document.getElementById('MyMessStr').innerHTML = mes;
  } else {
  mes = mes.replace('<NOSCRIPT>','');
  mes = mes.replace('</NOSCRIPT>','');
  document.getElementById('MyMessStr').innerHTML = mes;  
  };
};
--></script>

Неного разъясню работу скрипта.

Массив arrKWords содержит описание всех слов, после которых должен следовать рисунок. Цифра после слова "рисунок" означает порядковый номер вложенного изображения. То есть, если в тексте написано "изображение 4", что после него отобразится изображение, загруженное четвертым. Если подобного изображения нет, то никакого рисунка вставляться не будет.

Как это все использовать.

Пишем в шаблоне материала вместо простого вывода сообщения следующее:

Code

<div id="MyMessStr"><?if($ATTACHMENTS$)?>
  <noscript>$MESSAGE$</noscript>
<?else?>
  $MESSAGE$
<?endif?></div>

<?if($ATTACHMENTS$)?>
  <div id="MyAttStr">
  <noscript>Рисунки, прикрепленные к сообщению: $ATTACHMENTS$</noscript>
  </div>
<?endif?>
<script language="javascript">ParseAttach()</script>

Id в тегах div - это ориентир, откуда брать и куда ставить Их менять нельзя. Тег noscript требуется для того, чтобы учесть появление клиента без java.

зы: Если у вас не показываются картинки, то тогда посмотрите, установлена ли галочка "Прикрепить ссылки на изображения к сообщению" в редакторе сообщения. Текст галочки у каждого может отличаться. Она должна быть отмечена. :)

Вы можете присоедениться к моему микроблогу в Твиттере @SzenProgs. Буду благодарен, если оцените мой труд, и щелкните по звездочкам ниже.




Разбор строки аттача в системе UCOZ, второй скрипт
Скрипты
Скрипты, инструкции, справочники

rss
Категория:Скрипты
Просмотрено:6227
Рейтинг:5.0/2
Дата добавления:2009-01-17 09:58, Суббота
Добавил:Szen

Мини-форум

№ 02009-01-17 09:58
Szen
Аватар участника Szen
Здесь вы можете задать вопрос или оставить комментарий по теме "Разбор строки аттача в системе UCOZ, второй скрипт".
Гость
№ 1
2009-01-17 20:52
bigben
Аватар участника bigben
Интересный материальчик- есть повод призадуматься.... cool
Андрей · WWW
№ 2
2009-02-08 23:34
Szen
Аватар участника Szen
Некоторые коррективы к скрипту.
В шаблоне вместо "<noscript>$MESSAGE$</noscript>" следует писать без noscript, только "$MESSAGE$".
В скрипте удалить следующие строки:
mes = mes.replace(/</g,'<');
mes = mes.replace(/>/g,'>');

Это нужно для нормального отображения в Опере.

Szen · WWW
Учавствовать в обсуждении "Разбор строки аттача в системе UCOZ, второй скрипт" могут только зарегистрированные пользователи.
Реклама
Кнопка портала
Посетители
Зарегистрированных посетителей не было.
Друзья портала
Вакантное место для вашей рекламы!
RSS лента Блога
RSS лента Каталога файлов
RSS лента Новостей
Будьте в курсе событий.
Введите ваш email:

Личный блок
  • Гость портала.
  • Личных данных нет.
Вход на сайт
Регистрация
Опрос
Во сколько оцените портал
Всего ответов: 1935
Статистика
Valid HTML 4.01 Transitional

Яндекс цитирования



Онлайн всего: 4
Гостей: 4
Пользователей: 0
Портал SzenProgs.ru © 2008 - 2018 · Условия
Администратор и дизайнер портала: Szen
Хостинг от uCoz