Прикрутить виз редактор

Discussion in 'PHP' started by bxN5, 17 May 2009.

  1. bxN5

    bxN5 Elder - Старейшина

    Joined:
    8 Jan 2006
    Messages:
    687
    Likes Received:
    138
    Reputations:
    32
    Вообщем есть редактор тинимсе
    есть такая структура:
    получаем контент
    PHP:
    $q 'SELECT * FROM page WHERE id=1';
    $res=$db->QuerySingleRowArray($q) or die(mysql_error());
    $text=$res[1] ;
    суем в текстериа контент
    HTML:
    <textarea id=\"elm1\" name=\"elm1\" rows=\"15\" cols=\"80\" style=\"width: 80%\">
    			".$text."
    			</textarea>
    
    а вот дальше я не знаю как измененный текст со всеми тегами в редакторе отправить в базу есть что то вроде такого
    PHP:
    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 (
    "Текст отредактирован");
    При таком состоянии он возвращает редактор значения что хранится в базе при любых действиях что и не удивительно
     
    #1 bxN5, 17 May 2009
    Last edited: 17 May 2009
  2. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Как-нибудь так:
    Code:
    function save()
    {
      var text = tinyMCE.get('elm1').getContent();
    
      tinymce.util.XHR.send
      ({
        url:  'saver.php',
        data: 'text=' + encodeURIComponent(text)
      });
    };
     
  3. bxN5

    bxN5 Elder - Старейшина

    Joined:
    8 Jan 2006
    Messages:
    687
    Likes Received:
    138
    Reputations:
    32
    чет он не передает нифига(
    Ошибка: tinyMCE.get("elm1") is undefined
    не там вызываю что ли?
     
    #3 bxN5, 17 May 2009
    Last edited: 17 May 2009
  4. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Вполне может быть.
    /r/код.
     
  5. bxN5

    bxN5 Elder - Старейшина

    Joined:
    8 Jan 2006
    Messages:
    687
    Likes Received:
    138
    Reputations:
    32
    не думаю
    вот допустим сделать кнопку
    PHP:
    <a href=\javascript:;\" onmousedown=\"alert(tinyMCE.get('elm1').getContent());\">[Get contents]</a>
    так все норм , а на строчку нижу
    так этот эрор
     
  6. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    т.е. tinyMCE.init ты не вызываешь?

    P.S. И эта "строчка ниже" будет исполняться сразу, как только браузер её встретит. Т.к. полного примера так и нет, остается догадываться о том, где же находится поле для редактирования и вызов метода init, если он вообще вызывается.
     
    #6 astrologer, 18 May 2009
    Last edited: 18 May 2009
  7. bxN5

    bxN5 Elder - Старейшина

    Joined:
    8 Jan 2006
    Messages:
    687
    Likes Received:
    138
    Reputations:
    32
    Полностью
    PHP:
    <?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,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",

            // Theme options
            theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
            theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
            theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
            theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,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:
    <?php


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

      if (isset (
    $_POST['text'])) {
    $text=$_POST['text'];
    var_dump ($text);
        
    }
    else {
        echo (
    "text is null fuck(");
    }

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