.
Пишем Easy CMS. Урок 13. Разработаем движок админки сайта
Автор megabax   
24.05.2011 г.
Структура программы на примере простейшей программы

Пишем Easy CMS. Урок 13. Разработаем движок админки сайта

Что бы смотреть урок полностью, подпишитесь на платный раздел.

В платном разделе статья находиться здесь.


Свое программирование сайта мы начнем с админки. Для начала разработаем движок. Для этого нам придется создать новый класс ECMS_Web_Engine, который мы разместим в файле EASYCMSVisual.php. Сначала я приведу полный код класса, а потом будем разбирать его:

// ****************** данный класс поддерживает следующие команды ***********************

// edittable - отобразить форму редактирования таблицы

// editrow - отобразить форму редактирования строки таблицы

// addrow - отобразить форму добавления строки

class ECMS_Web_Engine extends ECMS_Visual_object {

 

    protected $table_viever; //текущий просмотрщик таблицы

    protected $row_editor;   //текущий редактор строки

    protected $is_add; //это режим добавления строки

    protected $row_id; //текущий ИД строки  

...

... Данный класс ссылается на классы  ECMS_Table_viewer и ECMS_Table_row_editor - это объекты, связанные с текущей таблицей. Движок у нас позволяет редактировать разные таблицы,  и для переключения между ними мы предусмотрели поля, ссылающиеся на текущую (выбранную) в данный момент таблицу. Точнее, не саму таблицу, а объекты, с ней связанные (редактор таблицы и редактор строки таблицы)...

... 

...Ну, и, наконец, последний штрих: сам файл admin.php:

<html>

 

<head>

  <title>Тест EASY CMS</title>

  <LINK HREF="ECMS.css" REL="stylesheet" TYPE="text/css">

</head>

 

 

<?php

 

    include_once("EASYCMSBase.php");

    include_once("EASYCMSDB.php");

    include_once("EASYCMSVisual.php");

    init_ECMS();

 

    //создадим базу данных и законнектимся к ней

    $db=new ECMS_Database("test","localhost","root","123");

    $db->set_prefix("T");

    $db->connect();

   

    //создадим "движок" сайта

    $engine=new ECMS_Web_Engine();

    $engine->set_name("engine");

 

    //Создадим контроллер ссылок

    $rc=new ECMS_References_controller();

    $rc->url="http://localhost";

    $rc->file_name="admin.php";

    $rc->set_name("refcont");

 

    //создадим редактор строки таблицы

    $ro=new ECMS_Table_row_editor();

 

    //создадим таблицу тестов

    $tb=new ECMS_Table("tests", $db);

    $tb->set_name("tests");

    $tb->fields[]=new ECMS_Field("id","Код","int",true);

    $tb->fields[]=new ECMS_Field("name","Наименование","text",false);

    $fl=new ECMS_Field("description","Описание","text",false);

    $fl->_width=70;

    $tb->fields[]=$fl;

   

 

    //создадми проcмотрищик таблицы и заполним его

    $tv=new ECMS_Table_viewer();

    $tv->table=$tb;

    $tv->edit_icon_html="<img src='edit.png' width=15 height=15 border=0>";

    $tv->del_icon_html="<img src='delete.png' width=15 border=0>";

    $tv->ref_control=$rc;

    $tv->row_editor=$ro;

    $tv->copy_fields_to_columns();

    $tv->set_name("tests_view");

   

    //заполним редактор строки

    $ro->columns=$tv->columns;

    $ro->set_name("roweditor");

    $ro->table=$tb;

    $ro->ref_controller=$rc;

 

    $rc->add($ro);

    $rc->add($tb);

   

    //добавим таблицу тестов в движок

    $engine->add($tv);

    $engine->add($ro);

    $engine->add($tb);

   

   

   

    //Превратим входные параметры в событие

    $is_handled=false;

    if(isSet($_GET["option"])) {

        //echo "QQQQ";

        $msg=$engine->create_message();

        $msg["destination_name"]=$_GET["objname"];

        $msg["row_id"]=$_GET["rowid"];

        $msg["option"]=$_GET["option"];

        $msg["data"]=$ro->get_data_from_post();

        $msg["form_name"]=$_GET["form_name"];

        $engine->send_message($msg,false,$engine);

        if($_GET["objname"]==$engine->get_name()) {

            !$is_handled=true;

        }

    }

    if(!$is_handled) {

        //echo "wwww";

        //если нет сообщений то устанавливаем текущей таблицу тестов

        $msg=$engine->create_message();

        $msg["destination_name"]=$engine->get_name();

        $msg["option"]="edittable";

        $msg["form_name"]=$tv->get_name();

        $engine->send_message($msg,false,$engine);

    }

?>

 

<body>

    <table>

        <tr>

            <td>Тесты</td>

            <td>Пользователи</td>

            <td>Оценки тестов</td>

            <td>Результаты</td>

        </tr>

        <tr>

            <td colspan=4>

                <?php

                    $engine->show();

                ?>

            </td>

        </tr>

    </table>

   

<?php

   

 

?>

 

</body>

 

</html>

Заметьте, здесь мы уже пытаемся даже шаблонизировать:

<body>

    <table>

        <tr>

            <td>Тесты</td>

            <td>Пользователи</td>

            <td>Оценки тестов</td>

            <td>Результаты</td>

        </tr>

        <tr>

            <td colspan=4>

                <?php

                    $engine->show();

                ?>

            </td>

        </tr>

    </table>

   

А теперь, результат работы программы:

Пишем Easy CMS. Урок 13. Разработаем движок админки сайта

 

Последнее обновление ( 24.05.2011 г. )