Модуль Админпанель

Огоревал я, наконец, модуль администрирования. Что он позволяет делать:

1. Работа с файлом config.php
2. Работа с шаблонами (скинами).
3. Работа со статическими страницами.
4. Сделал простейший инсталлятор модуля

1. Работа с файлом config.php
Теперь редактировать этот файл можно из Админпанели. Редактировать, разумеется, не все, а только определения констант, и только там, где значения задаются строками, числами либо логическими константами true/false. При этом обязательно создается бекап файла, а в новом файле помечается каждая строка, которая была изменена.

2. Работа с шаблонами (скинами).
Кроме того, что можно посмотреть список установленных шаблонов, можно тут же задать активный шаблон. Но смена активного шаблона не ограничивается тем, что просто меняется значение в config.php. Если под текущий активный шаблон устанавливались дополнительные модули, то, как правило, заливались дополнительные темплейты для Смарти в папку actions. Так админпанель проверяет содержимое этой папки для текущего шаблона, сравнивает с содержимым аналогичной папки выбранного шаблона, и, если будет на то добро админа, копирует необходимые темплейты в выбранный шаблон (возможно, немного путанно объясняю, но кто пробовал менять шаблоны, тот поймет).
Кстати, в файле style.css просматриваются комментарии и если встречается коммент вида:
/*  
Theme Name: <Название темы>
Theme URI: <Ссылка страницу темы, если есть>
Description: <Описание темы, текст так же может содержать ссылки>.
Version: <версия темы (они же могут меняться, дорабатываться)>
Author: <Имя (никнейм) автора>
Author URI: <Ссылка на сраницу автора>
*/
, то инфа из него используется для отображения в списке скинов. И, между прочим, я очень советую всем разработчикам скинов такие комменты писать (подробнее об этом здесь: livestreet.ru/blog/1625.html)

3. Работа со статическими страницами.
Тут ничего революционного нет, функционал (и бОльшая часть кода) взята из соотвествующего модуля. Просто мне показалось логичным включить его в админпанель.

4. Сделал простейший инсталлятор модуля (ну очень простейший, поэтому не пинайте, пожалуйста, сильно). Заливаем исходники в папку update/modules, и запускаем install.php. И все файлы модуля по нужным папкам сами будут раскиданы.

Да, и вот еще — модуль бесплатный. Во всяком случае, пока. И дело не в том, что мне денег совсем не надо или я время свое не ценю. Просто я считаю, что он еще слишком сырой, чтоб денег за него брать.

UPD. Известные проблемы:
1. Нет проверки по дате изменения файлов, проверяется только наличие файла

UPD 2. Появилось первое сообщение, что инсталлятор не сработал. Пока причину не понял, но если вдруг такое случается, то можно выполнить установку руками. Для этого из инсталлятора копируем соотвественно папки (со всем подпапками) classes и config. То же самое и с папкой templates, только вот содержимое из templates/skin/default надо скопировать в папку активного шаблона.
(Была ошибка в путях инсталлятора, сейчас она исправлена и исправленый вариант залит на сайт ЛС)

UPD 3 Можно поставить ссылку на админку так:
1. Находим в шаблонах нужной темы файл header_top.tpl
2. В файле находим подобные строки:
<div id="header">
  <h1><a href="/"><img src="{$DIR_STATIC_SKIN}/images/logo.png" style="width:220px;height:34px;" /></a></h1>
		
    <ul class="nav-main">
      <li {if $sMenuHeadItemSelect=='blog'}class="active"{/if}><a href="{$DIR_WEB_ROOT}/">{$aLang.blogs}</a></li>
      <li {if $sMenuHeadItemSelect=='people'}class="active"{/if}><a href="{$DIR_WEB_ROOT}/{$ROUTE_PAGE_PEOPLE}/">{$aLang.people}</a></li>
      <li {if $sAction=='page' and $sEvent=='about'}class="active"{/if}><a href="{$DIR_WEB_ROOT}/{$ROUTE_PAGE_PAGE}/about/">{$aLang.page_about}</a></li>
    </ul>

3. Добавляем еще один пункт меню перед тегом :
{if $oUserCurrent && $oUserCurrent->isAdministrator()}
  <li {if $sMenuHeadItemSelect=='admin'}class="active"{/if}><a href="{$DIR_WEB_ROOT}/admin/">{$aLang.admin_title}</a></li>
{/if}

В этом случае в основном меню добавится пункт «Админпанель», но только если юзер залогинен и если он является админом.

68 комментариев

avatar
Над бы сразу и удаление пользователей добавить :) Очень не хватает.
avatar
Да, работа с пользователями — это следующий шаг, самому надо :)
Я вообще сначала только переключение шаблонов сделал, потом конфиг, потом страницы. На этом решил остановиться и опубликовать модуль, чтоб хоть какие-то отзывы получить и дальше с их учетом двигаться.
avatar
Очень полезный модуль как для начинающих так и для знатоков) Спасибо огромное. Обязательно себе поставлю его.
avatar
Где сам модуль то? Где скачать?
avatar
присоединяюсь к вопросу, пока тоже не нашел
avatar
Пардон, ребята, поспешил я с топиком. Модуль-то я выложил, но он, кажись, еще модерацию должен пройти, прежде чем будет доступен для скачивания.
avatar
Отлично, одобрили модуль и теперь можно скачать его в разделе Модули!
avatar
Пытаюсь поставить но что то никак не могу, при попытке перейти по адресу как написано в ридми: Перейти по адресу http://<ваш_сайт>/admin/ и кликнуть по ссылке «upgrade»
Выдает 404 ошибку.
avatar
Скрипт <сайт>/update/modules/admin/install.php отработал? Ошибок не было?
avatar
Ошибок не видел, сразу отобразилось: Modle installed successfully и ссылка внизу.
avatar
Странно это, в принципе там просто создание папок и копирование файлов. Если что-то не проходит, то ошибку должно было выдать. Но буду думать, что там могло быть.

А пока см. UPD 2 в теле топика, как установить модуль руками. Сложного в этом ничего нет, но хотелось все еще упростить. Попробуй руками, и дай знать, получилось ли, нет ли.
avatar
Народ, отпишитесь, пожалуйста, кто поставил себе модуль — были ли какие-то проблемы, глюки в процессе установки?

Я поставил на «чистый» ЛС — проблем не было. Как еще проверить — не знаю.
avatar
>Я поставил на «чистый» ЛС — проблем не было.
3.0 или 3.1?
avatar
Я ставил тоже на чистый 3.0, видимо у меня что то не так.
avatar
Ставил на 0.3.0
Апгрейд еще не делал
avatar
Считаю, что этот инсталлятор делать вообще не целесообразно, у меня к примеру права на все папки — 644 (на случай воруй-убивай), тупо скопировать те же файлы — будет тот же эффект.
avatar
Warning: opendir(Z:/home/localhost/www/uploads/addons/admin/install) [function.opendir]: failed to open dir: No error in Z:\home\localhost\www\update\modules\admin\install.php on line 3

Modle installed successfully

localhost/admin/

А по ссылке разумеется 404 страничка:)
avatar
Спасибо! Сразу стало ясно, в чем глюк. Поправил инсталлятор
avatar
измени uploads/addons на update/modules в файле update\modules\admin\install.php
avatar
После манипуляций со сменой шаблонов подвал на место не встал, копирайт остался от ALF, хотя выбрал обратно new. А так за модуль респект!
avatar
Попробуй удалить все файлы в папке templates/compiled
avatar
и обновить страницу
avatar
А что за подвал?
avatar
footer — это подвал
avatar
Совет seoweb помог? При смене скина сам набор шаблонов не трогается, только проверяется файл с меню админки и файлы шаблонов для actions. И, если необходимо, дописываются. Т.е. по логике возврат скина должен все венуть на место. Вот разве что действительно скомпилированные файлы еще чистить…
avatar
теперь всё работает без проблем) Ошибка была в путях) Спасибо за правку.
avatar
Большое спасибо за работу, хорошее дело делаете :)
С нетерпением жду модуля для работы с пользователями, особенно хотелось бы иметь инструменты для выявления повторных аккаунтов, виртуалов и им подобных.
avatar
Полезный модуль. Интересно что на выходе получится. Так, глядишь, скоро станет LS полноценной CMS.
avatar
Надеюсь, LS никогда не станет «полноценной CMS», а так и останется движком для создания блогосоциальных сервисов
avatar
Время покажет. Пока же по количеству разных модулей движение в сторону CMS, но «заточенной» под блогосоциальную сеть.
avatar
Вы противоречите сами себе, потому не до конца понимаете разницы между терминами CMS и UGC. Это две разные концепции, первая из них подразумевает иерархию писатель-читатель, а во второй каждый является писателем.

В блогосоциальных сетях изначально не стоят такие задачи, которые решают системы управления контентом. Потому и нет инструментов, их реализующих.

Рискну предположить, пока на на странице «о проекте» есть текст «LiveStreet представляет из себя бесплатный(GPLv2) движок для блого-социальных сетей.» рассчитывать на превращение ЛС в «полноценную CMS» не стоит.
avatar
Что могу сказать. Век живи — век учись.
Для конечного пользователя концепция саморегулирующегося сообщества (UGC) и социальная сеть, как расширение CMS дают разные возможности. Я писал с точки зрения администрирования и посчитал данный модуль полезным (как в CMS ;))
Пока читал, наткнулся на интересную статью: www.newsland.ru/News/Detail/id/105527/cat/65/
Вот такой модуль «UCM» мог бы понравиться многим.
avatar
Если я правильно понял, это банальное расширение пользовательского профиля за счёт новых полей. Модулем там и не пахнет
avatar
А как должен пахнуть модуль?
avatar
Познакомьтесь поближе с архитектурой ЛС, разница между хаком и модулем значительна
avatar
Согласен. И?
avatar
добавить новые поля в базу и выводить данные из них — это не модуль, здесь принято называть такие доработки хаками
avatar
а при добавлении новых таблиц? :)
avatar
Только увидел, что вы написали этот модуль.
Что вы мне голову морочите? :-)
я уверен, что разница вам уже известна
avatar
Я морочу? Я просто удивился, и решил, что упустил что-то очень важное. Причем, говорю почти серьезно, т.к. в архитектуру ЛС въехал как-то не сразу. И, возможно, до сих пор всех нюансов не уловил. Но изначально хотелось написать именно расширение (модуль), не трогая оригинальных текстов и базовых таблиц.
avatar
Я же говорил, что всё вы и без меня знаете, где чем пахнет.

А почему вы хотели написать модуль? Я так понимаю, он должен заместить собой профили?
avatar
Ну модуль этот не только с юзерами работает. Начал я вообще с того, что админку для управления страницами решил поудобней сделать. Потом переключение скинов «налету», потом вообще правку конфига… Так одно за другим и потянулось.

Но отчасти, пожалуй, так — админ получает более расширенный функционал работы с профилями.

А захотелось написать потому что а) не хватало админского инструментария, сведенного в одно место, б) чтоб лучше понять, как устроен ЛС
avatar
а у меня трабла возникла, может, и детская — инсталлятор пишет:
Warning: mkdir() [function.mkdir]: Отказано в доступе in /update/modules/admin/install.php on line 36

или это хостинг надоть смотреть?
avatar
Вообще, судя по тексту ошибки — нет прав на создание папки. Какой именно — трудно сказать. Если не критично по времени, то погоди немного — скоро (а конкретней — сегодня) собираюсь новую версию модуля выложить. Там инсталлятор чуть умнее, а в функционал модуля добавлена работа с юзерами (просмотр инфы и возможность бана, как на время, так и навечно).
avatar
тоже первым делом подумал о правах…

некритично) буду ждать — судя по отзывам вещь классная)))
avatar
гут, тогда подожду немного лучше :)
avatar
Выложил новую версию модуля. Подробности здесь: livestreet.ru/blog/addons/1645.html
avatar
А есть возможность сделать метку во время бана, чтоб она отображалась в профиле и в списке людей… типо черной метки?
Надеюсь что понятно выразился)
avatar
Вообще планируется, что админ коммент сможет добавлять о причине бана. Его выводить? Или просто метку какую-то?
avatar
причины лучше не выносить на всеобщее обозрение
avatar
Вообще мне интересна такая вещь, как определение не добросовестных пользователей.
Объясню. При пользовании модуля Cron можно теоретически заминусить юзера и он удалится. Есть люди, которые могут минусить все его комменты и тп. Вот определение таковых было бы полезно и раздача им «затычек» на недельку к примеру.
Насчет причин бана, не скажу что это особенно важно, администрация может банить без оглашения таковых) Я так думаю =)
И если никак не сделать так, что бы при наведении на значок «черной метки» всплывала причина у каждого конкретного юзера, то пусть будет как будет. Я человек далекий от коддинга, просто идей у меня много))))
avatar
Вот определение таковых было бы полезно

А каков алгоритм «определения таковых»?
avatar
пробежать по базе. посмотреть отрицательные оценки юзера.
1. если больше N минусов адресованы одному и тому же юзеру, то выдать его в результате.
2. если больше N минусов к «в целом положительным постам» выдать юзера в результате

на вскидку что-то такое придумывается
avatar
Охота на ведьм не принесёт пользы проекту. Лучше создать такие условия, когда минусовать всех подряд будет невыгодно. Например, при отрицательном голосовании за карму вычитать и часть кармы минусующего, при минусовании топиков и каментов уменьшать силу голосующего.

Похожий алгоритм реализован на хабре и даже на одном из сайтов на ЛС.
avatar
а как же тогда срать сливать?
хотя… если текущая оценка топика >= 0 то при нажатии минус снять N силы\кармы голосующего…
avatar
Мужики, надо отделять мух от котлет. Настройки, позволяющие админу задавать чего и сколько будет плюсоваться/минусоваться — это одна песня. Инструмент, позволяющий админу собирать ту или иную статистику — другая. А вот политика, которую админ будет реализовывать, используя оба эти инструмента — это уже совсем-совсем другая пестня.
avatar
Да мы просто от темы отклонились, это к модулю уже не имеет отношения. Формула расчёта находится за пределами его задач, извини за оффтоп.
avatar
Срать сливать можно и нужно толпой. Я не предлагаю вычитать из кармы минусующего столько же кармы, насколько он понижает оппоненту, нужно искать какой-то баланс.

Карма — это карма и есть, а срать сливать — тоже всё-такие дело, не угодное Будде. Войны могут быть справедливыми, но они всегда сеют разрушения и печаль с обеих сторон.

Думаю у себя в дальнейшем ввести именно такую, описанную выше формулу, выводящую кармадрочество на невиданный доселе уровень изощрённости. По совету Ларисы об изменении формулы никому не скажу :-)
avatar
я вообще у себя переделываю рейтинг систему совсем подругому… в ней карма будет иметь куда меньшее значение, по сравнению с силой
avatar
Все установилось, но при попытке любых изменений пишет, что «Ошибка создания бэкап-файла»:

Warning: copy(config/config.php.bak) [function.copy]: failed to open stream: Отказано в доступе in .../classes/actions/ActionAdmin.class.php on line 497
avatar
Скорее всего так оно буквально и есть: Отказано в доступе. Т.е. права на папку с конфигом не позволяют создать в ней файл с помощью PHP-скрипта.
avatar
Решил, только выставив права на папку confic 777. Но такой доступ как-то смущает с точки зрения безопасности…
avatar
Посмотрел сейчас — у меня права на папку стоят 755, на файл — 644. Но для разных хостеров могут быть различные варианты. Конечно, в какой-то степени это компенсируется запретом, установленным в .htaccess

Но окончательное решение за владельцем сайта. И тут уж приходится выбирать — если запрещаем скрипту писать в папки, то выбрасываем админку и все ковыряем ручками.
avatar
Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file in /classes/modules/admin/Admin.class.php on line 66

хз, посмотрел строку, пока не могу разобраться в чём проблема…
avatar
при использование англиского языка вылазит сообщение NOT_FOUND_LANG_TEXT v 0.21 возможно как то исправить?
avatar
Не переведен файл локализации модуля. Есть два решения проблемы:
1. Тупо скопировать файл локализации, назвав его english.php. Тогда все будет работать, но админка будет на русском.
2. Перевести фал локализации на английский. Более долгий, но более грамотный путь. Но с этим я бы не советовал спешить, т.к. в конце недели планирую выдать новую версию модуля — опять переводить придется.
avatar
Спасибо огромное
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.