Разбор строки аттача в системе 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
Категория:Скрипты
Просмотрено:6265
Рейтинг: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:

Личный блок
  • Гость портала.
  • Личных данных нет.
Вход на сайт
Регистрация
Опрос
Каким файл-хостингом вы пользуетесь?
Всего ответов: 411
Статистика
Valid HTML 4.01 Transitional

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



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