Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

Создание Админ панели в виде модуля
http://forum.kohanaframework.su/viewtopic.php?f=20&t=352
Страница 1 из 1

Автор:  Alex [ 30 авг 2012, 15:24 ]
Заголовок сообщения:  Создание Админ панели в виде модуля

Всем здравствуйте.
На днях пришло в голову создать админ панель в модулях. сейчас расскажу по порядку=)
В каталоге Модули создал каталог "Admin" данный каталог содержит под папки: classes, config, media, view и init.php
classes соответственно содержит каталоги "controller" ,"model".
config пока пустой
ну и вьюшки в "view"
в media я планировал поместить все файлы .css .js .img
но при использовании хелпера а именно HTML::style() функции он не может добраться к файлам расположенным в папке media.
есть подозрение что проблема в роутах. Рассмотрел 2 кмс на Кохана (Gleez и Kohanut) но там весь сайт в модуле=) что я не понял немного
если кто нибудь знает решение как подключить статичные файлы находящиеся в модуле ко вьюшкам модуля
заранее благодарен, даже за внимание.

(в коханут в файле init.php прописывается роут media который ссылается на не существующего действия в контроллере в контроллере вылавливается это и отключается авто-рендер
)

Автор:  evgentus [ 30 авг 2012, 16:19 ]
Заголовок сообщения:  Re: Создание Админ панели в виде модуля

Плохая идея грузить статику (css, js, img и т.д.) через апач.

Вот например в моей cms, все файлы модуля расположены в папке модуля. И чтобы подключить модуль, достаточно просто его установить как обычный модуль в папку modules.

Вся статика отдается nginx'ом в обход бэкэнда(без участия коханы).

В массив прописаны пути до css(js), /modules/module_name/media/css/file.css
Ну а потом через хелпер HTML::style()

Или я не правильно понял вопрос.

Автор:  Alex [ 30 авг 2012, 19:58 ]
Заголовок сообщения:  Re: Создание Админ панели в виде модуля

evgentus спасибо за ответ!
но думаю не правильно привязывать кмс к отдельному типу сервера?!.
я так же вбивал пить к слитилям /modules/module_name/media/css/file.css не подключаются попробовал в корневой каталог скинуть kohana/media/css/file.css работает
но вы правильно поняли вопрос.

Автор:  Sergey [ 30 авг 2012, 22:39 ]
Заголовок сообщения:  Re: Создание Админ панели в виде модуля

У меня всё работает. админку делал смотря на git://github.com/vimofthevine/kohana-admin.git
Свои css/js/img модуль берёт со своей папки

Автор:  Alex [ 30 авг 2012, 23:12 ]
Заголовок сообщения:  Re: Создание Админ панели в виде модуля

исходный код в кронтроллере media аналогичен одноименному файлу в gleez, видимо я не до конца разобрался!
спасибо Вам Sergey.

Автор:  evgentus [ 31 авг 2012, 15:05 ]
Заголовок сообщения:  Re: Создание Админ панели в виде модуля

Alex писал(а):
evgentus спасибо за ответ!
но думаю не правильно привязывать кмс к отдельному типу сервера?!.


Вы немного путаете... Цмс не привязана к отдельной конфигурации сервера, я просто описал свою конфигурацию.

Я говорил про то, что не нужно привлекать кохану к раздаче статики. Это не правильно!

Статика должна отдаваться сервером, а не фреймворком.

При отдачи статики фреймворком, он подгружает 100 +- 20 файлов, в худшем, 30-50 в лучшем случае, ищет его в папке, отдает его нам, и жрет проц, память.
А когда отдает сам веб-сервер, он просто берет файл из папки и отправляет его нам.

https://github.com/vimofthevine/kohana- ... /media.php по моему мнению, это как раз пример "Как не надо делать!"

Автор:  evgentus [ 31 авг 2012, 15:19 ]
Заголовок сообщения:  Re: Создание Админ панели в виде модуля

Alex писал(а):
evgentus спасибо за ответ!
я так же вбивал пить к слитилям /modules/module_name/media/css/file.css не подключаются попробовал в корневой каталог скинуть kohana/media/css/file.css работает


А не работало у Вас потому, что в файле .htaccess есть строчка:

Код:
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]


Если убрать modules, то все заработает! Но опять же могут возникнуть проблемы с безопасностью.

Автор:  Sergey [ 01 сен 2012, 01:29 ]
Заголовок сообщения:  Re: Создание Админ панели в виде модуля

evgentus писал(а):
https://github.com/vimofthevine/kohana-admin/blob/master/classes/controller/admin/media.php по моему мнению, это как раз пример "Как не надо делать!"


Вы не понимаете что тут сделано )
Сервер отдаёт статитику в обход коханы

Автор:  evgentus [ 03 сен 2012, 08:56 ]
Заголовок сообщения:  Re: Создание Админ панели в виде модуля

Sergey писал(а):
evgentus писал(а):
https://github.com/vimofthevine/kohana-admin/blob/master/classes/controller/admin/media.php по моему мнению, это как раз пример "Как не надо делать!"


Вы не понимаете что тут сделано )
Сервер отдаёт статитику в обход коханы


/admin/media/file_name

Код:
<?php defined('SYSPATH') OR die('No direct script access.');

/**
 * Admin media controller
 *
 * @package     Admin
 * @category    Controller
 * @author      Kyle Treubig
 * @copyright   (c) 2010 Kyle Treubig
 * @license     MIT
 */
class Controller_Admin_Media extends Controller {

   public function action_file() {
      $request = Request::instance();
      $file = $request->param('file');

      $ext = pathinfo($file, PATHINFO_EXTENSION);

      $file = substr($file, 0, -(strlen($ext) + 1));

      if ($file = Kohana::find_file('media', $file, $ext))
      {
         $request->response = file_get_contents($file);
      }
      else
      {
         Kohana::$log->add(Kohana::ERROR, 'Admin media controller error while loading file, '.$file);
         $request->status = 404;
      }

      $request->headers['Content-Type'] = File::mime_by_ext($ext);
   }

}


И в представлениях
Код:
Route::get('admin/media')->uri(array('file'=>'ThePixelDeveloper_Admin-Template/css/960.css'))


Так там получают ссылку /admin/media/ThePixelDeveloper_Admin-Template/css/960.css
Что в свою очередь просит кохану поискать в папках "media" файл "ThePixelDeveloper_Admin-Template/css/960.css" и отдать его(либо ошибку 404, если не нашли).

PS. Если пропустил то место где отдается без участия Kohana - подскажите!

Если конечно файлы не будут лежать в корне, по адресу "/admin/media/ThePixelDeveloper_Admin-Template/css/960.css" , но тогда контроллер Controller_Admin_Media не нужен!

Автор:  Sergey [ 04 сен 2012, 21:28 ]
Заголовок сообщения:  Re: Создание Админ панели в виде модуля

признал ошибку

Страница 1 из 1 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/