PDA

Просмотр полной версии : Прикрутить виз редактор


bxN5
17.05.2009, 17:06
Вообщем есть редактор тинимсе
есть такая структура:
получаем контент
$q = 'SELECT * FROM page WHERE id=1';
$res=$db->QuerySingleRowArray($q) or die(mysql_error());
$text=$res[1] ;
суем в текстериа контент
<textarea id=\"elm1\" name=\"elm1\" rows=\"15\" cols=\"80\" style=\"width: 80%\">
".$text."
</textarea>

а вот дальше я не знаю как измененный текст со всеми тегами в редакторе отправить в базу есть что то вроде такого
if (isset ($_POST['but'])) {
echo ("<script type=\"text/javascript\">

var text = tinyMCE.get('elm1').getContent();</script> "); /* в документации так
получают контент но по поему он его
так и не получает дальше хз как это правильней передать в пхп */


$update["text"] = MySQL::SQLValue($text);
$filter["id"] = 1;
$id = $db->UpdateRows("page", $update, $filter) or die(mysql_error());

echo ("Текст отредактирован");
При таком состоянии он возвращает редактор значения что хранится в базе при любых действиях что и не удивительно

astrologer
17.05.2009, 17:42
Как-нибудь так: function save()
{
var text = tinyMCE.get('elm1').getContent();

tinymce.util.XHR.send
({
url: 'saver.php',
data: 'text=' + encodeURIComponent(text)
});
};

bxN5
17.05.2009, 18:20
чет он не передает нифига(
Ошибка: tinyMCE.get("elm1") is undefined
не там вызываю что ли?

astrologer
17.05.2009, 19:29
чет он не передает нифига(
Ошибка: tinyMCE.get("elm1") is undefined
не там вызываю что ли? Вполне может быть.
/r/код (http://tinyurl.com/minimalcode).

bxN5
18.05.2009, 00:07
не думаю
вот допустим сделать кнопку
<a href=\javascript:;\" onmousedown=\"alert(tinyMCE.get('elm1').getContent());\">[Get contents]</a> так все норм , а на строчку нижу
<script type=\"text/javascript\">

save() ;
</script> ");
так этот эрор

astrologer
18.05.2009, 00:14
не думаю
вот допустим сделать кнопку
<a href=\javascript:;\" onmousedown=\"alert(tinyMCE.get('elm1').getContent());\">[Get contents]</a> так все норм , а на строчку нижу

так этот эрор т.е. tinyMCE.init ты не вызываешь?

P.S. И эта "строчка ниже" будет исполняться сразу, как только браузер её встретит. Т.к. полного примера так и нет, остается догадываться о том, где же находится поле для редактирования и вызов метода init, если он вообще вызывается.

bxN5
18.05.2009, 00:49
Полностью
<?php


if( ! defined( 'PROTECTED' ) ) {
die( "Хакера не пройдут!!" );
}


if(!$_SESSION['admin']) die ("Доступ закрыт");
$db = new MySQL(true, "$dbname", "localhost", "$dbuser", "$dbpass"); // конектимся
if ($db->Error()) $db->Kill();
$q = 'SELECT * FROM page WHERE id=1';
$res=$db->QuerySingleRowArray($q) or die(mysql_error());
$text=$res[1] ;
var_dump($text);
echo ("<script type=\"text/javascript\">
function save()
{
var text = tinyMCE.get('elm1').getContent();

tinymce.util.XHR.send
({
url: 'saver.php',
type : 'POST',

data: 'text=' + encodeURIComponent(text)
});
};
</script> ");
echo ('
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=cp-1251" />
<title>Административная панель</title>
<style type="text/css">
#wrap
{
width: 100%;
height: 100%;
}
.loginbox1
{
width: 300px;
padding: 4px;
border: 1px solid #777;
background-color: #777;
color: white;
font-weight: bold;
}
.loginbox2
{
width: 300px;
padding: 4px;
border: 1px solid #777;
color: #777;
}
</style>
</head>
<body>
<center>
<table cellpadding="0" cellspacing="0" id="wrap"><tr><td align="center">
<table cellpadding="0" cellspacing="0">
<tr><td class="loginbox1" align="center">Вход выполнен</td></tr>
<tr><td class="loginbox2" align="center">
<script type="text/javascript" src="../js/tiny_mce/tiny_mce.js"></script>

<script type="text/javascript">
tinyMCE.init({
// General options
mode : "textareas",
theme : "advanced",

plugins : "safari,pagebreak,style,layer,table,save,advhr,advi mage,advlink,emotions,iespell,inlinepopups,insertd atetime,preview,media,searchreplace,print,contextm enu,paste,directionality,fullscreen,noneditable,vi sualchars,nonbreaking,xhtmlxtras,template",

// Theme options
theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethr ough,|,justifyleft,justifycenter,justifyright,just ifyfull,styleselect,formatselect,fontselect,fontsi zeselect",
theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replac e,|,bullist,numlist,|,outdent,indent,blockquote,|, undo,redo,|,link,unlink,anchor,image,cleanup,help, code,|,insertdate,inserttime,preview,|,forecolor,b ackcolor",
theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,su p,|,charmap,emotions,iespell,media,advhr,|,print,| ,ltr,rtl,|,fullscreen",
theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,st yleprops,|,cite,abbr,acronym,del,ins,attribs,|,vis ualchars,nonbreaking,template,pagebreak",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : true,

// Example content CSS (should be your site CSS)
content_css : "css/content.css",

// Drop lists for link/image/media/template dialogs
template_external_list_url : "lists/template_list.js",
external_link_list_url : "lists/link_list.js",
external_image_list_url : "lists/image_list.js",
media_external_list_url : "lists/media_list.js",

// Replace values for the template plugin
template_replace_values : {
username : "Some User",
staffid : "991234"
}
});
</script>
<form action="index.php?go=pagemain" method="post">


');
echo ("

<textarea id=\"elm1\" name=\"elm1\" rows=\"15\" cols=\"80\" style=\"width: 80%\">
".$text."
</textarea>
</div>

<!-- Some integration calls -->

<a href=\javascript:;\" onmousedown=\"alert(tinyMCE.get('elm1').getContent());\">[Get contents]</a>


<br />
<input type=\"submit\" name=\"but\" value=\"Войти\" />




</form>
</div>



");

echo ('

</td></tr>
</table>
</td></tr></table>
</center>
</body>

</html>
');
if (isset ($_POST['but'])) {
echo ("<script type=\"text/javascript\">

save() ;
</script> ");
include ("saver.php");

var_dump ($text) ;

$update["text"] = MySQL::SQLValue($text);
$filter["id"] = 1;
$id = $db->UpdateRows("page", $update, $filter) or die(mysql_error());

echo ("Текст отредактирован");



}

?>
saver.php
<?php


if( ! defined( 'PROTECTED' ) ) {
die( "Хакера не пройдут!!" );
}

if (isset ($_POST['text'])) {
$text=$_POST['text'];
var_dump ($text);

}
else {
echo ("text is null fuck(");
}

?>
вот как то так