My favorites | Sign in
Project Logo
       
Search
for
Updated May 01, 2008 by maxsite.org
roadmap  
Ход работ

Планы (ближайшие)

В связи с открытием моего сайта, дальнейший ход работ планирую публиковать на http://max-3000.com/

15 апреля 2008 г.

12 апреля 2008 г.

11 апреля 2008 г.

10 апреля 2008 г.

8 апреля 2008 г.

7 апреля 2008 г.

  • + Переделал функции рубрик. После того, как опубликовал у себя просьбу с помощью(http://maxsite.org/kak-iz-dereva-sdelat-ul-li-strukturu), получил вариант от TedBeer (http://tedbeer.net/wp/), поэтому и решил его взять за основу. Получилось довольно неплохо. Итоговая функция mso_cat_ul() принимает формат вывода ( %NAME% %ID% %DESC% %LEVEL% %LINK% %CHECKED%), массив для %CHECKED%, массив для class="selected", класс для основного списка, поле сортировки и порядок сортировки. То есть с помощью этой функции можно выстроить список практически для любой задачи, включая и чекбоксы, и раскраска списков с помощью стилей. Исходные данные получаются, как и прежде mso_cat_array_single. Это всего один запрос к БД. С учетом кэширования - 0. Также можно использовать и свой кастомный исходный массив. Правда в том же формате.

4 апреля 2008 г.

3 апреля 2008 г.

2 апреля 2008 г.

1 апреля 2008 г.

То есть алгоритм такой: если обычным способом получается page_404 (т.е. не найдено), то дополнительно проверяется существование page с таким slug. Если такой нет, то проверяется рубрика с таким slug. И уже если и этого нет, то отдается в page_404. Если же есть, то модифицируется тип страницы и управление передается вьюверу page или category. Следует учесть, что для каждого такого поиска выполняется дополнительный sql-запрос.

30 марта 2008 г.

29 марта 2008 г.

26 марта 2008г.

25 марта 2008 г.

22 марта 2008 г.

5 марта 2008 г.

3 марта 2008 г.

28 февраля 2008 г.

27 февраля 2008 г.

24 февраля 2008 г.

18 февраля 2008 г.

16 февраля 2008 г.

  • + Решил вместо редактора tinyMCE использовать http://FreeRichTextEditor.com. Прежде всего решение принял из-за того, что freert гораздо меньше: 160Кб вместо 1.4Мб у tinyMCE. Кроме этого в freert уже решен вопрос с отображением текста в html-коде и даже существует предпросмотр. Поэтому переделок получилось минимум. Редактор выполнил в виде плагина. Для админки он подключается автоматом.
  • + Редактор freert вызывается одной функцией. В параметрах указываются нужные кнопки, панельки, режимы, нужное оформление и т.д. То есть сам редактор завернут в отдельную функцию, которой можно управлять по своему усмотрению.
  • + Подключил редактор freert в админку в создание новой записи.
  • + Определился с админскими плагинами. Они будут находиться в admin/plugins. Причем сделал так, чтобы всё управление было передано в эти плагины. По функциональности и структуре они ничем не отличаются от обычных. Разница только в том, что находятся в другом месте и обычно нужно подключать сразу при входе в админку. Собственно поэтому и разделил их.
  • + Подключил базовые админские плагины admin_home (главная страница админки), admin_cat (рубрики), admin_menu (вывод меню. Само меню хранится в массиве - здесь же просто его отображение), admin_options (настройки), admin_page (записи), admin_plugins (плагины) и admin_users (пользователи). В каждом плагине можно использовать дополнительные действия.
  • + Переделал темплейт админки.
  • + Добавил функцию mso_remove_hook, которой можно удалить из хуков определенную функцию.
  • + Подправил вывод дефолтных данных в админке.
  • + Сделал функцию mso_hook_present - проверяет существование хука. Для админки оказалось полезная вещь.
  • + Для работы с текстом добавил функций: mso_text_to_html (конвертирует html-спецсимволы в нормальный html), mso_auto_tag (расстановка тэгов - функцию внаглую выдрал из WordPress/wpautop).
  • + Наконец-то добрался до сессий и сделал авторизацию. С куками решил пока не делать. Сессии всё-таки универсальней. Но вообще вопрос пока открыт.
  • + Сделал функцию вывода формы логина mso_login_form. Достаточно указать параметры для настройки оформления. Можно указать куда редиректиться. Проверяется xss-атака на основе сессий: если сессия истечет, то форма автоматом средиректит на страницу логина.
  • + В шаблоне ввел еще один тип страницы loginform, где можно кастомизировать дизайн формы логина.
  • + Функция is_login проверяет залогинен ли пользователь.
  • + Изменил версию на 0.04.

11 февраля 2008 г.

7 февраля 2008 г.

28 января 2008 г.

27 января 2008 г.

25 января 2008 г.

21 января 2008 г.

20 января 2008 г.

19 января 2008 г.

до этого


Comment by akzhan.abdulin, Mar 13, 2008

чтобы не растекаться мыслею по древу, - стоит уйти от ограничения CodeIgniter? вида модуль/действие.

Вот мой код для REST. Ещё есть нечто полезно-похожее для блоков.

index.php <?php

require_once(путь конфига); require_once(PATH_INC. '/ModuleBase?.class.php');

ModuleBase?::runAppropriateModule();

?>

ModuleBase?.class.php <?php

class ModuleBase? {

function do_default($parts) { }

function run($parts) {
$tail = array(); while (count($parts) > 0) {
$proposedName = 'do'. implode('', $parts); array_unshift($tail, array_pop($parts)); if (method_exists($this, $proposedName)) {
call_user_func(array(&$this, $proposedName), $tail); return;
}
} $this->do_default($tail);
}
static function getClearQParam() {
if (!array_key_exists('q', $GET)) {
return '';
} $q = $
GET'q'?; $q = preg_replace(
'/[\#\<\>\\\:\@]/', '', $q );
$q = preg_replace("/(\.\.?+)/", "\.", $q); $q = preg_replace("/(\/\/?+)/", "\/", $q); if (strlen($q) > 0 && $q0? == '/') {
$q = substr($q, 1);
} if (strlen($q) > 0 && $q- 1? == '/') {
$q = substr($q, 0, -1);
} return $q;
}
static function getQueryParts() {
return explode('/', self::getClearQParam());
}
static function runNotFoundModule() {
$module = new NotFoundModule?(); $module->run(self::getQueryParts());
}
static function handleRedirects($parts) {
global $q_Redirects; $q = implode('/', $parts); if (array_key_exists($q, $q_Redirects)) {
header('Location: http://'. $SERVER'HTTP_HOST'?. '/'. $q_Redirects$q?); exit;
}
}
static function runAppropriateModule() {
$parts = self::getQueryParts();
if (implode('', $parts) != '') {
self::handleRedirects($parts); $tail = array(); $moduleClassName = 'NotFoundModule?'; while (count($parts) > 0) {
$proposedFileName = PATH_MODULE. '/'. implode('.', $parts). '.module.php'; $proposedModuleName = implode('', $parts); if (file_exists($proposedFileName)) {
require_once($proposedFileName); $moduleClassName = $proposedModuleName; break;
} array_unshift($tail, array_pop($parts));
} $module = new $moduleClassName(); $module->run($tail);
} else {
self::runFront(); return;
}
}
static function runFront() {
require_once(dirname(FILE). '/FrontModule?.class.php'); $module = new FrontModule?(); $module->run(self::getQueryParts());
}

}


Sign in to add a comment
Hosted by Google Code