Программирование > JavaScript & JScript

Редактирование новостей для идиотов

(1/7) > >>

NeoNox:
Вкратце ситуация такова:
Пришел ко мне начальник и говорит: то, что у нас каждый зарегистрированный пользователь может добавлять статьи на сайт. Это хорошо, но нужно сделать так, чтобы каждая домохозяйка(наверное с совковых времен это пошло,блин :( ) могла добавлять эти самые статьи. Поэтому нужно модифицировать раздел подачи новостей/статей и сделать сервисы его как в ворде. То есть убрать нафик тэги и это окошко textarea сделать визуальным аки на хотмейле.
Вот теперь я сижу и чешу репу, как это воплотить в жизнь...
То есть я подсознательно осознаю, что это делается с использованием активХ, но в каком направлении копать я не оч. хорошо понимаю. Может кто уже боролся с такими вещами? И если есть статьи или готовое решение? В знак благодарности могу там баннерами или деньгами поделиться...

Daiz13:
У меня есть wysiwyg редактор на JavaScript, может поможет?

NeoNox:

--- Цитировать ---У меня есть wysiwyg редактор на JavaScript, может поможет?
--- Конец цитаты ---

Сори, а что этоза зверь? Можно взглянуть?

Daiz13:
Куда посылать?

Макс:
я как то писал такое, то я там такой интерфейс использовал (но только под IE5, хотя вроде и в IE4 должен работать)



--- Код: ---
// файл editor.js
var anons= null;
var news = null;
var stat= null;

function initEditor()
{
  anons = document.frames["anonsF"].document;
  anons.designMode = "On";
  news = document.frames["newsF"].document;
  news.designMode = "On";
  stat = \'anons\';
}

// делает элемент списка
function setList()
{
  if (stat == "news")
  {
 var range = news.selection.createRange();
        }
  else
  {
 var range = anons.selection.createRange();
        }

  execIt(range, "InsertUnorderedList");

  if (stat == "news")
  {
 newsF.focus();
        }
  else
  {
 anonsF.focus();
        }

  if (ItalicButton.style.borderStyle == "inset")
  {
     ItalicButton.style.borderStyle = "outset";
  }
  else
  {
     ItalicButton.style.borderStyle = "inset";
  }
}



function execIt(range, command, interf, value)
{
  if (range.text.length > 0)
  {
     r = range.execCommand(command,interf,value);
range.select();
  }
  else
  {
range.pasteHTML(" ");
         range.moveStart("character", -1)
range.select();
     r = range.execCommand(command,interf,value);
range.text = "";
  }
  return r;
}

// делает текст толстым
function setBold()
{
  if (stat == "news")
  {
 var range = news.selection.createRange();
        }
  else
  {
 var range = anons.selection.createRange();
        }

  execIt(range, "Bold");
  if (stat == "news")
  {
 newsF.focus();
        }
  else
  {
 anonsF.focus();
        }

  if (boldButton.style.borderStyle == "inset")
  {
     boldButton.style.borderStyle = "outset";
  }
  else
  {
     boldButton.style.borderStyle = "inset";
  }
}


// делает текст толстым
function setItalic()
{
  if (stat == "news")
  {
 var range = news.selection.createRange();
        }
  else
  {
 var range = anons.selection.createRange();
        }

  execIt(range, "Italic");

  if (stat == "news")
  {
 newsF.focus();
        }
  else
  {
 anonsF.focus();
        }

  if (ItalicButton.style.borderStyle == "inset")
  {
     ItalicButton.style.borderStyle = "outset";
  }
  else
  {
     ItalicButton.style.borderStyle = "inset";
  }
}


// вставляет тег BR
function setBR()
{
  if (stat == "news")
  {
 var range = news.selection.createRange();
        }
  else
  {
 var range = anons.selection.createRange();
        }
 range.pasteHTML("
");
  if (stat == "news")
  {
 newsF.focus();
        }
  else
  {
 anonsF.focus();
        }
range.select();
}

function setColor()
{
   // если цвет не был выбран - error
   if (colorText.value == "")
    {
         alert("Вы не указали цвет !");
         return 0;
        }
  if (stat == "news")
  {
 var range = news.selection.createRange();
        }
  else
  {
 var range = anons.selection.createRange();
        }

  if (redButton.style.borderStyle == "inset")
  {
     execIt(range,"RemoveFormat");
     redButton.style.borderStyle = "outset";
  }
  else
  {
     execIt(range,"ForeColor",true,"#"+colorText.value);
     redButton.style.borderStyle = "inset";
  }
  if (stat == "news")
  {
 newsF.focus();
        }
  else
  {
 anonsF.focus();
        }
}

function getEditorHTML()
{
    if (stat == "news")
  {
 alert(news.body.innerHTML);
        }
  else
  {
 alert(anons.body.innerHTML);
        }

}

function insertHR()
{
  if (stat == "news")
  {
 var range = news.selection.createRange();
        }
  else
  {
 var range = anons.selection.createRange();
        }
  range.execCommand("InsertHorizontalRule");
  if (stat == "news")
  {
 newsF.focus();
        }
  else
  {
 anonsF.focus();
        }
}
function AddLink()
{//Identify selected text
  if (stat == "news")
  {
 var range = news.selection.createRange();
        }
  else
  {
 var range = anons.selection.createRange();
        }

if (!range=="")
{
    //Create link
     range.execCommand("CreateLink",1);
}
}
function addImage()
{//Identify selected text
  if (stat == "news")
  {
 var range = news.selection.createRange();
        }
  else
  {
 var range = anons.selection.createRange();
        }

if (!range=="")
{
    //Create image
     range.execCommand("insertImage",1);
}
}

function addColor1(colorN)
{
 colorText.value=colorN;
 document.all[\'colors\'].style.visibility="hidden";
 setColor();
}

function formSubmit()
{
 document.forma.anonsFF.value=anons.body.innerHTML;
 document.forma.newsFF.value =news.body.innerHTML;
 document.forma.submit();
 return true;
}

// выравнивание текста по левому краю
function alignL()
{
  if (stat == "news")
  {
 var range = news.selection.createRange();
        }
  else
  {
 var range = anons.selection.createRange();
        }

  execIt(range, "JustifyLeft");
  if (stat == "news")
  {
 newsF.focus();
        }
  else
  {
 anonsF.focus();
        }

  if (justifyL.style.borderStyle == "inset")
  {
     justifyL.style.borderStyle = "outset";
  }
  else
  {
     justifyL.style.borderStyle = "inset";
  }
}
// выравнивание по центру.
function alignC()
{
  if (stat == "news")
  {
 var range = news.selection.createRange();
        }
  else
  {
 var range = anons.selection.createRange();
        }

  execIt(range, "JustifyCenter");
  if (stat == "news")
  {
 newsF.focus();
        }
  else
  {
 anonsF.focus();
        }

  if (justifyC.style.borderStyle == "inset")
  {
     justifyC.style.borderStyle = "outset";
  }
  else
  {
     justifyC.style.borderStyle = "inset";
  }
}

// выравнивание по правому краю
function alignR()
{
  if (stat == "news")
  {
 var range = news.selection.createRange();
        }
  else
  {
 var range = anons.selection.createRange();
        }

  execIt(range, "JustifyRight");
  if (stat == "news")
  {
 newsF.focus();
        }
  else
  {
 anonsF.focus();
        }

  if (justifyR.style.borderStyle == "inset")
  {
     justifyR.style.borderStyle = "outset";
  }
  else
  {
     justifyR.style.borderStyle = "inset";
  }
}

// выравнивание по двум краям
function alignF()
{
  if (stat == "news")
  {
 var range = news.selection.createRange();
        }
  else
  {
 var range = anons.selection.createRange();
        }

  execIt(range, "JustifyFull");
  if (stat == "news")
  {
 newsF.focus();
        }
  else
  {
 anonsF.focus();
        }

  if (justifyF.style.borderStyle == "inset")
  {
     justifyF.style.borderStyle = "outset";
  }
  else
  {
     justifyF.style.borderStyle = "inset";
  }
}

--- Конец кода ---

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии