Бесплатная CMS для вашего сайта Разумная альтернатива WordPress

MaxSite CMS 0.74

06-08-2012Время чтения ~ 3 мин.Versions 59117

Очередная версия MaxSite CMS. Изменений немного, в основном это «текучка», но я выделил изменения в отдельную версию, поскольку включил в комплект системы несколько новых функций, которые могут быть полезны вебмастерам.

Традиционно, краткое описание изменений.

  • Переход на CodeIgniter 2.1.2.
  • Исправление, касаемое безопасности. Дополнительная XSS-фильрация комментариев. Может быть актуально для старых сайтов, которые работали еще примерно с версии 0.40.
  • LessPHP обновлен до 0.3.5.
  • В функции mso_cat_array_single() убрал дефолтный тип страниц blog. Теперь по-умолчанию получаются все записи рубрик, не зависимо от типа записей. Так более логично.
  • Новая функция mso_get_cat_from_id(), которой можно получить значение произвольного ключа указанной рубрики. Например mso_get_cat_from_id(10, 'category_name') вернет название рубрики номер 10.
  • При залогировании выполняется 3-секундная задержка. Это примитивная защита от брутфорса (brute force) - подбора паролей.
  • Плагин autoclose_tags может использовать php-библиотеку Tidy.
  • В плагине Forms поле subject (тема письма) принимает либо select, если указаны несколько тем, либо редактируемое поле input. При этом, если это одиночная тема, которая начинается с символа «_», то тема письма формируется как скрытое (тип hidden) и не видна посетителям.
  • Архив сайта (плагин sitemap) сортируется по category_menu_order, а не по имени, как было раньше.
  • В компоненте default-шаблона menu.php убрал поддержку хука main_menu. По сути этот хук использовался только в плагине MainMenu, который теперь исключен из комплекта MaxSite CMS. Текущий вариант стандартного меню на обычном CSS полностью перекрывает этот плагин, но проще и удобней в работе.
  • Также исключены плагины Admin_announce и pre_to_ol. Плагины перемещены в Каталог плагинов. Кому нужно, качайте оттуда.
  • Вывод комментариев (page-comments.php) чуть переиграл по верстке.
  • Новый type_foreach-файл page-other-pages, по которому можно вывести свой блок «Еще записи этой рубрики».
  • Новые stock-файлы: class-columns, page-out, thumb.
  • class-columns - php-класс позволяет просто организовать вывод любой информации колонками/блоками. Колонки могут формироваться как автоматом, так и вручную. Можно использовать счетчик.
  • page-out - форматированный вывод записей. По сути это обёртка над функциями mso_page_.... Вместо них используются подстановочные фразы, вроде $p-> line('[date] | [autor] | [comments]'). Можно задать форматирование любого блока, вывести html, «умный» блок и т.п. Я попытался собрать в этом классе все наиболее частые задачи по выводу данных записей.
  • thumb - класс для формирования thumb-изображений (с произвольными размерами). В отличие от подбных thumb-библиотек, в этой изображения не формируются из get-запроса. Именно get-запросы подобных библиотек являются гиганской дырой в безопасности не только сайта, но и всего сервера. У нас это исключено, поскольку вся работа осуществляется через явный вызов php-функций. Кроме того, функции жестко завязаны на каталог uploads. На входе передаём адрес произвольного изображения (например картинка записи), на выходе - готовый адрес нового файла thumb-изображения с заданными размерами. Миниатюру можно создать пропорциональным уменьшением, точным размером, кропом по центру, кропом от левого угла, кропом со смещением, вначале уменьшение, потом кроп, а также уменьшение по ширине, после кроп по центру. В общем варианты на любой вкус.

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

Похожие записи
Комментарии (44) RSS
1 Александр 2012-08-07 11:47:13

Радует, что система "вылизывается" и развивается. Maxу огромная благодарность.


2 Аноним 2012-08-08 02:11:51

Макс, спасибо тебе за возможность бесплатно обучаться этому кропотливому, но безумно интересному делу. Надеюсь, что не за горами и моя благодарность.


3 Василий Петрович Романов 2012-08-08 03:51:24

Чтож, как говорил Жан-Луи Гассье: "обновляемся"!


4 Александр 2012-08-09 14:17:21

Поздравляю с развитием, ты когда выложишь яндекс кошелек?;-)


5 Максим 2012-08-09 14:18:33 admin

У меня нет Яд-кошелька. Он только для россиян.


6 Александр 2012-08-09 14:27:16

Жаль ( ты получал от меня сообщение что я тоже хочу помогать в развитии проекта? На емейл ответа так и не приходило. По поводу янд. Понятно прийдется 4.5 процента терять на переводе на твой веб мани :(


7 Александр 2012-08-09 14:55:30

небольшая поправка, проверил, оказывается совсем не могу перевести с ян на вебмоней ( а про развитие я имел ввиду кодинг :)


8 Максим 2012-08-09 15:18:29 admin

Понимаю, но к сожалению, от меня это уже не зависит. :-)


9 Сергей М 2012-08-12 06:55:03
У меня нет Яд-кошелька. Он только для россиян.

Почему только для Россиян?

Заводи и получай деньги. ;-)


10 Teem 2012-08-12 15:39:21

Какие либо особенности по обновлению с версии 0.734 есть или просто заливаем файлы по верх прежних?


11 Максим 2012-08-12 15:42:32 admin

Поверх.


12 jimmy jonezz 2012-08-14 18:26:56
Новые stock-файлы: class-columns, page-out, thumb.

Это здорово!


13 zloj 2012-08-16 05:30:55

Жаль что базу пользователей и комментаторов не хотят объединять, сейчас большая часть сайтов хотят форум с интеграцией сайта, это большой минус движку...


14 pashich 2012-08-16 07:25:11

Кто-нибудь победил на этой версии плагин "Древовидные комментарии"? Кто сможет помочь за небольшое материальное вознаграждение, оставьте ваш контакт, свяжусь с вами.


15 pashich 2012-08-16 23:15:51

Не актуально, вышла новая версия плагина, она корректно работает на 0.74


16 Аноним 2012-09-03 11:39:13

Подскажите, а есть ли плагин какой для автоматической публикации через RSS ленту?


17 Денис Назаров 2012-09-04 18:50:30

Колбасит плагин login_form. Комюзеру через него залогиниться просто нереально.


18 Денис Назаров 2012-09-04 19:17:29

блиииинннннн..... логинится без проблем, но!!!!!!

в качестве имени надо мыло вводить.... пипец логика....

Макс! Может стоит отказаться от деления юзер/комюзер?

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

Да, понимаю, все перелопатить придется. Но чем проще система, тем она надежнее.


19 zloj 2012-09-05 01:24:32

Полностью поддерживаю, нужна единая таблица пользователей!


20 Александр 2012-09-05 10:45:08

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


21 Anonymous 2012-09-05 11:43:14

Есть плагин регистрации, можно сразу задать чтоб комментаторы регистрировались как пользователи.


22 Денис Назаров 2012-09-05 11:56:45

Ну как по мне, так тип пользователя может быть только один - юзер он юзер и есть. А вот прав у него может быть много, а может быть и мало. И даже если у него админские права, то он все равно остается пользователем.

Сижу, ваяю плагин инет-магазина, собрался уже клиенту показывать, ладно вовремя сообразил зарегить простого юзера (комюзера в терминологии Макса) и вдруг получаю картинку, как будто и не залогинен юзер! В корзину не пускает, товар туда складывать не дает, а все потому, что сам то я сижу под админом, а тут, понимаешь, просто Ден лезет :)

Вот и пришлось извращаться и делать отдельную функцию для определения залогинености (ком)юзера. А таблицы то уже разработаны! А как корзину вести с разными типами? А если они по id пересекутся?

В общем - жутко неудобно. А всего-то делов - в таблице пользователя предусмотреть поле-флажок публикации своих записей, возможность входить в админку и фильтрацию контента админки, то есть чтобы свои записи трогал, чужие (не мог)/(мог) и т.д.

2Gor - кривоват плагинчик... письмо мне так и не пришло, как админ я вручную не смог активировать, пришлось лезть в базу и ручками, ручками... Это уж совсем не годится


23 zloj 2012-09-06 03:54:17

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


24 Максим 2012-09-06 07:40:53 admin

Нечего пускать посторонних в админку...

Всё остальное, что тут понаписали - бред. Разберитесь что и как устроено, после делайте громогласные заявления.


25 Денис Назаров 2012-09-06 11:05:29

Дык уже разобрался... но все равно как-то не очень...


26 Денис Назаров 2012-09-06 11:19:09

Макс, и еще... понятное дело, ты автор, у тебя свое видение, но тем не менее - просто прикинь, сколько народу пустило бы посторонних в админку. А если с грамотной разноской прав - так это вообще без проблем.

Да и речь, в общем, не о том, чтобы их туда пускать, а о том, что приходится много лишнего делать. Вот к примеру, твой же код

if (is_login())<br>        {<br>                $out = '' . t('Привет,') . ' ' . getinfo('users_nik') . '!<br><br>                                [<a href="' . getinfo('siteurl') . 'admin">' . t('управление') . '</a>]<br>                                [<a href="' . getinfo('siteurl') . 'logout'.'">' . t('выйти') . '</a>]<br>                                
';<br>        }<br>        elseif ($comuser = is_login_comuser())<br>        {<br>                if (!$comuser['comusers_nik']) $cun = t('Привет!');<br>                        else $cun = t('Привет,') . ' ' . $comuser['comusers_nik'] . '!';<br><br>                $out = '' . $cun . '<br><br>                                [<a href="' . getinfo('siteurl') . 'users/' . $comuser['comusers_id'] . '">' . t('своя страница') . '</a>]<br>                                [<a href="' . getinfo('siteurl') . 'logout'.'">' . t('выйти') . '</a>]<br>                                
';<br>        }<br>        else<br>        {<br>                $after_form = (isset($options['after_form'])) ? $options['after_form'] : '';<br><br>                $out = mso_login_form(array( 'login'=>t('Логин (email):') . ' ', 'password'=>t('Пароль:') . ' ', 'submit'=>'', 'form_end'=>$after_form ), getinfo('siteurl') . mso_current_url(), false);<br>        }

здесь лишнего 30%, а именно - проверка, юзер это или комюзер. Единая таблица только в одном этом плагине сэкономила бы тебе время на написание, а уж остальным бы как жизнь облегчила.

Но если тебе так уж хочется плодить сущности сверх необходимого - что ж... хозяин-барин.


27 Максим 2012-09-06 11:29:04 admin

А у меня и так грамотная «разноска» прав. Или сделай свою «объединенную» функцию. Если же этот код вызывает проблемы с пониманием или для тебя он слишком большой, то могу только посоветовать учиться и разбираться дальше.


28 Денис Назаров 2012-09-06 11:32:49

Не надо думать, что все такие непонятливые.

Сделал уже давно, но все равно это неправильно.

А "грамотная разноска прав" по двум таблицам - это уже не есть "грамотно".

Но все равно - за систему спасибо :)


29 Максим 2012-09-06 11:42:07 admin
А "грамотная разноска прав" по двум таблицам - это уже не есть "грамотно".

А права никакого отношения и не имеют к таблицам. Меня несколько напрягает, когда человек, не разобравшись в сути, начинает говорить что правильно, а что нет. Неужели сложно зайти на форум и почитать обсуждения по этому вопросу? Я не утверждаю, что система пользователей в MaxSite CMS идеальна, но она практически гарантированно защищена от взломов и несанкционированного доступа. А то, что пользователи разделены на две таблицы, так это вообще не проблема. Получить данные любого из них - один sql-запрос - это вообще задача для пятиклассника.


30 Денис Назаров 2012-09-06 12:05:57

а есть гарантия, что id пользователя не пересечется с id админа?


31 Максим 2012-09-06 12:21:31 admin

Поля id в наших таблицах нет.


32 Денис Назаров 2012-09-06 12:37:42

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

в общем, что бы ты ни говорил - все равно система заточена под блоги. И сделать что-то, кроме блогов - надо сильно постараться... Что радует, так это возможность делать это "что-то" в виде плагина, что огорчает - так это необходимость двойной обработки данных о пользователях. Что с учетом общей расхлябанности пыхи огорчает вдвойне. Но делать нечего, кактус будет сгрызен....


33 Максим 2012-09-06 12:45:45 admin

Смешно... RTFM.


34 Денис Назаров 2012-09-06 12:58:05

убедил :)


35 Gor 2012-09-06 15:22:02
все равно система заточена под блоги. И сделать что-то, кроме блогов - надо сильно постараться

А вот это, извините меня, уже действительно бред , что вы вообще понимаете под словом "блог", на MaxSite CMS реализованы, не только сайты визитки, блоги, интернет магазины, но и довольно-таки крупные порталы, у вас в руках система с открытым кодом, всё что для вас не хватает, можете дорабатывать сами, реализовывать плагинами и т.д..

И вообще если у вас на сайте есть другие авторы, просто создайте для них отдельных пользователей, если же вы х.з. что делаете на своём сайте, это же не значит, что у всех комментаторов должен быть доступ к админке, комментатор для того и есть, чтоб комментировать статьи, а не иметь доступ к админке.


36 Дмитрий 2012-09-08 14:07:44

Второй раз переустановил. Не могу попасть в админку,нажимаю "вход",выскакивает авторизация,ввожу логин и пароль-неверный логин и все! Что я делал не так?


37 Griz 2012-09-08 16:09:09

Некоторое время назад у меня подобная проблема возникала (с глюками при авторизации) из за проблем у одного интернет-оператора (кстати очень известного и широко распостраненного), услугами которого я пользовался... Проблемы с авторизацией были на всех сайтах на MaxSite CMS. Локально всё работало нормально. Долго и нудно переписывался с тех.поддержкой провайдера. Проблему решили на стороне провайдера.


38 Дмитрий 2012-09-08 16:33:49

ну,с оператором я точно ничего сделать не смогу-монстр Укртелеком.

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


39 Александр 2012-09-08 19:36:07
Некоторое время назад у меня подобная проблема возникала (с глюками при авторизации) из за проблем у одного интернет-оператора (кстати очень известного и широко распостраненного), услугами которого я пользовался...

Извини за банальный вопрос, но ты случайно не забыл переименовать mso_config.php-distr?


40 Griz 2012-09-09 06:58:36

В моем случае, дело было точно не в mso_config.php и не в параметре $mso_install. Я пробовал авторизоваться при подключении через разных провайдеров. Специально взял у товарища usb-модем другого известного оператора. В одном случае авторизация проходила без проблем, в другом случае авторизация не проходила с сообщением о неверности логина - пароля... Кстати, некоторые глюки с авторизацией в этом случае наблюдались и при попытке доступа на майл.ру. Я сначала думал, что это майловская проблема, но мне их техподдержка ответила, что подобные проблемы - это глюк провайдера Х. (я им не сообщал, что пользовался его услугами, но как раз через Х я и выходил в сеть).


41 Александр 2012-09-09 18:19:15

Здравствуйте!

После установки всё прошло успешно, но при входе в админпанель вывелась ошибка:

A PHP Error was encountered

Severity: 8192

Message: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead.

Filename: mysql/mysql_driver.php

Line Number: 319

A PHP Error was encountered

Severity: 8192

Message: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead.

Filename: mysql/mysql_driver.php

Line Number: 319

Что с этим делать?


42 Максим 2012-09-09 19:54:19 admin

Это из-за PHP 5.4. Вот так попробуйте: http://forum.max-3000.com/viewtopic.php?p=18847#p18847


43 Александр 2012-09-09 20:13:38

Ура! Сработало.

Спасибки! Движок супер!!!


44 wemarus 2012-09-10 04:34:28

Супер надо перейти и мне на свеженькую!