За последние 24 часа нас посетили 18109 программистов и 1684 робота. Сейчас ищут 1075 программистов ...

DSCMS

Тема в разделе "Решения, алгоритмы", создана пользователем Gromo, 16 янв 2011.

  1. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    Думаю, что пора выкладывать свой велосипед на всеобщее обозрение и критику.

    http://dscms.ru/downloads.html

    Предлагаю вначале ознакомиться с мануалом прежде чем переходить к просмотру работы движка.
    Это даст примерное представление об основных идеях и функциональности движка.

    Основные характеристики:
    - Простая работа со страницами + поддержка ЧПУ
    - Работа с MySQL/PostgreSQL
    - Поддержка многоязыкового контента встроена в ядро
    - Удобная работа с базой данных
    - ну и другое...


    Движок НЕ ПРЕДНАЗНАЧЕН для работы из-под директории.

    После установки установить права 777 для директорий и файлов:
    /system/backup
    /system/cache
    /system/logs
    /system/config.ini


    Хотелось бы услышать идеи по тому, чего не хватает и что можно было бы сделать удобнее.
     
  2. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Код шатает вправо-влево. У кого-то из нас двоих что-то с редактором.
     
  3. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    Это печально
     
  4. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    vasa_c
    Notepad++ с настройкой замены табуляции на 2 пробела
     
  5. d1gi

    d1gi Активный пользователь

    С нами с:
    24 май 2009
    Сообщения:
    326
    Симпатии:
    0
    да, vasa_c прав :) код колбасит в разны стороны... где-то табуляции, где-то пара пробелов %)) хаотические переводы строк т.е. колв-во строк между функциями или операторами... в общем косогласие словить можно ;)

    я принял почти вот такой http://framework.zend.com/manual/ru/cod ... tting.html стандарт кодирования, но с некоторыми отклонениями ;)

    работу не из-под корневой директории надо обязательно делать.
     
  6. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    сделано из-за того, что многие ссылки используют абсолютные пути, начинающиеся от корня сайта - /
    если движок положить не в корень, то ссылки будут некорректными. а так - да, будет работать :)

    Исправил проблемы с отступами в коде. Добавил поддержку TinyMCE в админке.
    http://dscms.ru/downloads/20110117.rar

    Планирую поработать над кэширующим механизмом, бэкапом базы данных, поддержкой больших типов.
    Также хочу сделать большинство ошибок в виде exception-ов, которые будут отлавливаться системой
    в виде 500 ошибки, т.е. не показываются пользователю.

    Думаю над переделкой инсталла - чтобы можно было развернуть сайт сразу из бэкапа базы, и задать
    пароль для администратора; добавить проверку необходимых прав записи на директории.

    Не очень нравится реализация механизма перевода, когда для каждого модуля нужно вручную
    подгружать файл перевода - может лучше сделать общую и по-модульную базу перевода?
    что-то типа "не нашёл в по-модульном, ищи в общем переводе".

    мануал хоть читабельный? какие-нибудь замечания? может что добавить?
     
  7. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    двоечник) я ж говорил подсветку кода в мане сделать :)
    шаблон крутой, хорошо выглядит. и это... надо бы дать доступ в массы, а то и потестить внутренность не выйдет, пока не установишь.
     
  8. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Gromo
    честно попытался поставить
    куча ошибок во время установки и после, проверяй права на все файлы время установки
    пока не сделал rewrite rule для nginx выпадала ошибка Undefined index: route сейчас
    PHP:
    1. [17.01.2011 20:37:03] E8 [Line 4]: /var/www/test.ru/system/filters/remove_route_from_globals.php
    2. Undefined index: route
    3. Tracing: File: /var/www/test.ru/index.php[19] -> File: /var/www/test.ru/system/init.php[42] -> File: /var/www/test.ru/system/filters/remove_route_from_globals.php[4]
    а не задана она видимо потому что я нахожусь просто на index.php
    include_once(/var/www/test.ru/system/functions/handler_exception.php): failed to open stream: No such file or directory
    в логах, захожу в папку а там exception_handler.php нашел в скрипте
    PHP:
    1. include_once(SYSTEM_PATH.'/functions/exception_handler.php');
    2.     include_once(SYSTEM_PATH.'/functions/handler_exception.php');
    пропало только после того как я создал второй файл...
    еше ошибка
    PHP:
    1. [17.01.2011 20:40:28] E2048 [Line 119]: /var/www/test.ru/system/classes/system.php
    2. Declaration of controller_index::index() should be compatible with that of dsc_controller::index()
    3. Tracing: File: /var/www/test.ru/system/init.php[58] -> File: /var/www/test.ru/system/classes/system.php[157] -> File: /var/www/test.ru/system/classes/system.php[119] -> File: /var/www/test.ru/system/classes/system.php[119]
    почему нельзя явно выключить вывод ошибок на страницу?
    почему init не метод какого либо класса?
    public $title в контроллере должно быть? а зачем тогда page?
    с классом бд и адаптером тоже что то не понятное
    PHP:
    1. <?php
    2. if($query === false) { return $result; }
    3.     switch($this->type){
    4.       case 'mysql':
    5.         while($row = mysql_fetch_array($query)) {
    6.           $result[$i] = array();
    7.           foreach($row as $key=>$value) {
    8.             if(!is_numeric($key)) { $result[$i][strtolower($key)] = $value; }
    9.           }
    10.           $i++;
    11.         }
    12.         break;
    13.       case 'pgsql':
    14.         $rows = pg_num_rows($query);
    15.         for ($i=0; $i<$rows; $i++) {
    16.           $row = pg_fetch_array($query, $i, PGSQL_ASSOC);
    17.           foreach($row as $key=>$value) {
    18.             if(is_numeric($key)) continue;
    19.             if(in_array($value, array('t', 'f'))) { $value = ($value == 't') ? 1 : 0; }
    20.             $result[$i][strtolower($key)] = $value;
    21.           }
    22.         }
    23.         break;
    24.     }
    25.     return $result;
    26.   }
    а если понадобится поддержка еше 2 баз бдудешь дописывать это везде?
    чем не угодили phpdoc комментарии в коде? по ним ведь api документацию генерируют...
     
  9. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    Апельсин
    сделал небольшую подсветку синтаксиса в мануале.

    вроде и так находится в публичном доступе.
    но вначале бета тест, критика и замечания.


    Padaboo
    ошибки поправил, версию выложил по тому же пути http://dscms.ru/downloads/20110117.rar
    добавил параметр DEBUG в index.php, если true - ошибки и исключения будут выводиться пользователю,
    если false - ошибки и исключения будут писаться в логи. Только нужно выставить права на запись
    для файлов логов в папке system/logs соответственно. По умолчанию - True.

    при подключении файла ясно видно что выполняется и подключается при инициализации системы.
    Также инициализацию необходимо делать в глобальной области видимости для возможности
    подключения модулей, не предназначенных для данной системы. Потому и не пойдёт делать
    в виде метода какого-либо класса.

    Изначально класс адаптер предназначен именно для этого - подключения форума MyBB к примеру.
    Но я ещё думаю над этим как сделать лучше...

    в смысле? page - это класс шаблонизатора, текущая страница.
    $title забирается системой только у запрошенного модуля - ведь из шаблона могут быть
    запрошены и другие модули, которые могут выставлять свой тайтл. А так какой тайтл решает система.

    какие есть предложения? :)

    этот момент не совсем ясен.
     
  10. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    Достаточно добавить <base /> в <head /> и определить путь (пусть даже его укажет пользователь во время установки)

    http://www.w3schools.com/tags/tag_base.asp
    http://htmlbook.ru/html/base
     
  11. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    Devzirom
    спасибо, буду думать над этим
     
  12. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Gromo
    а перезалить на сайт не забыл? я заново поставил, теже самые ошибки
    ps: пойду на виндуз c апачем попробую, я так понял на нем и для него написано
     
  13. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    Gromo, благодарю
     
  14. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    Padaboo
    вроде перезалил http://dscms.ru/downloads/20110117.rar

    Код находится в переделках, постоянно перезаливаю.
    Так что могут выскочить ошибки, которых до этого не было :)

    Если несложно, не мог бы дать конфиг для nginx-а ?
     
  15. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Gromo
    вот ошибки с виндуса
    сек обратно на свой комп перйду
     
  16. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    Padaboo
    начало файла init.php такое?

    PHP:
    1. <?php
    2.  
    3.   // include global functions
    4.    
    5.     if(!DEBUG){
    6.       include_once(SYSTEM_PATH.'/functions/error_handler.php');
    7.       include_once(SYSTEM_PATH.'/functions/exception_handler.php');
    8.     }
     
  17. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Devzirom
    и еще исправить все "абсолютные пути, начинающиеся от корня сайта - /" =)
     
  18. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    И это тоже. Но всё же, хороший продукт должен работать в любой среде, с mod_php5 и без него, и корректно понимать своё местоположение, относительно корня сайта