Deprecated: Function create_function() is deprecated in /var/www/smart-core.org/web/task/includes/class.flyspray.php on line 113 Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /var/www/smart-core.org/web/task/vendor/adodb/adodb-php/adodb.inc.php on line 1167 Deprecated: Function create_function() is deprecated in /var/www/smart-core.org/web/task/includes/class.user.php on line 115 Tasker Smart Core :: CMSBundle: Tasklist

CMSBundle

https://github.com/Smart-Core/CMS-Sandbox/tree/master/src/SmartCore/Bundle/CMSBundle

IDOpenedCategorySummaryDue DateSeverityPriorityStatusProgress
53216 Oct 2015-Органичение доступа по IPLowVery LowНовая
0%
Task Description

Запрещающий и разрешающий. Также разрешить суперадмину входить всегда.

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

53114 Oct 2015-Починить восстановление пароля CriticalVery HighНовая
0%
Task Description

Сейчас в форму не попадает _node_id т.к. она генерируется ручками.

Как временное решение - в app переопределяется шаблон и там явно прописывается node_id

Как вариант, можно таскать current_node_id в cms.context

53014 Oct 2015CoreОбработка POST данныхCriticalVery HighНазначенная
0%
Task Description

Надо придумать красивый механизм маршрутизации данных для модулей.

49102 Mar 2015CoreПроверка на корректность конфигурации модуляMediumLowНовая
0%
Task Description

Спрятать вот такой код:

if (null === $this->group_id) {
	return new Response('Module Menu not yet configured. Node: '.$this->node->getId().'<br />');
}

Например в метод checkParams в SmartCore\Bundle\CMSBundle\Module\ModuleBundle.

48418 Jan 2015-Система вычисления последних обновлений с github'aLowVery LowНовая
0%
Task Description

Первым делом надо получить дату последнего коммита на локалке:

git log -1 --format=%cd

Затем можно с гитахаба получить список коммитов начиная с указанной даты:

https://api.github.com/repos/Smart-Core/CMS-Sandbox/commits?since=2015-01-18T00:41:23Z

Получить информацию о последнем коммите с гитхаба:

https://api.github.com/repos/Smart-Core/CMS-Sandbox/git/refs/heads/master

А в ней уже будет ссылка object.url на детальное описание коммита.

46805 Nov 2014Синтаксис включения областейHighLowНовая
0%
Task Description

Сейчас шаблонам передаются данные в виде переменной, наример так:

  {{ content }}

Думаю лучше генерировать области через функцию, например так:

  {{ cms_region('content') }}

или короче

  {{ region('content') }}

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

46523 Oct 2014CoreПолитика преобразования или валидациии частей адреса.CriticalVery HighНовая
0%
Task Description

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

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

Можно сделать автоматическое удаление не корректных символов, например /

43602 Jun 2014-Починить SimpleDoctrineORMAdapterLowVery LowНовая
0%
Task Description

В версии 1.0.2 тут https://github.com/whiteoctober/Pagerfanta удалили старый пагинатор... надо решить как дальше поступать, либо пользоваться толстым адаптером, либо скопипастить код оттуда и хранить в своих классах.

41004 Mar 2014-Редирект на прежнюю страницу после логаутаLowVery LowНовая
0%
Task Description

https://www.google.ru/search?q=symfony+logout+handler

http://www.reecefowell.com/2011/10/26/redirecting-on-loginlogout-in-symfony2-using-loginhandlers/

40424 Feb 2014-Измнение вёрстки формы мета-тэгов на jQueryLowVery LowНовая
0%
Task Description

Сейчас есть вот такие формы:

<form action="" method="POST" class="form-horizontal">
    <fieldset>
        <div id="smart_core_folder_title_control_group" class=" control-group">
            <label for="smart_core_folder_title" class=" control-label required">
            Заголовок <span>*</span></label>
            <div class=" controls">
                <input type="text"
                    id="smart_core_folder_title" 
                    name="smart_core_folder[title]" required="required"
                    class="focused input-block-level not-removable"
                    value="Главная"/>
            </div>
        </div>
        <div id="smart_core_folder_descr_control_group" class=" control-group">
            <label for="smart_core_folder_descr" class=" control-label optional">
            Описание </label>
            <div class=" controls">
                <input type="text"
                    id="smart_core_folder_descr"
                    name="smart_core_folder[descr]" 
                    class=" input-block-level not-removable"/>
            </div>
        </div>
        <div id="smart_core_folder_router_node_id_control_group" class=" control-group">
            <label for="smart_core_folder_router_node_id" class=" control-label optional">
            Router node id </label>
            <div class=" controls">
                <input type="number"
                    id="smart_core_folder_router_node_id"
                    name="smart_core_folder[router_node_id]"
                    class=" input-block-level not-removable"/>
            </div>
        </div>
        <div id="smart_core_folder_position_control_group" class=" control-group">
            <label for="smart_core_folder_position" class=" control-label optional">
            Позиция </label>
            <div class=" controls">
                <input type="number"
                    id="smart_core_folder_position"
                    name="smart_core_folder[position]"
                    class=" input-block-level not-removable"
                    value="0"/>
            </div>
        </div>
        <div id="smart_core_folder_has_inherit_nodes_control_group" class=" control-group">
            <label for="smart_core_folder_has_inherit_nodes" class=" control-label optional">
            Наследование нод </label>
            <div class=" controls">
                <label class="checkbox">
                    <input type="checkbox"
                       id="smart_core_folder_has_inherit_nodes"
                       name="smart_core_folder[has_inherit_nodes]"
                       class="" value="1"
                       checked="checked"/>
                </label>
            </div>
        </div>
        <div id="smart_core_folder_template_inheritable_control_group" class=" control-group">
            <label for="smart_core_folder_template_inheritable" class=" control-label optional">
            Наследуемый шаблон </label>
            <div class=" controls">
                <input type="text"
                    id="smart_core_folder_template_inheritable"
                    name="smart_core_folder[template_inheritable]"
                    maxlength="30"
                    class=" input-block-level not-removable"/>
            </div>
        </div>
        <div id="smart_core_folder_template_self_control_group" class=" control-group">
            <label for="smart_core_folder_template_self" class=" control-label optional">
            Собственный шаблон </label>
            <div class=" controls">
                <input type="text"
                    id="smart_core_folder_template_self"
                    name="smart_core_folder[template_self]"
                    maxlength="30"
                    class=" input-block-level not-removable"/>
            </div>
        </div>
        <div id="smart_core_folder_meta_control_group" class=" control-group">
            <label class=" control-label optional">
            Мета тэги </label>
            <div class=" controls">
                <div id="smart_core_folder_meta_description_control_group" class=" control-group">
                    <label for="smart_core_folder_meta_description" class=" control-label optional">
                    Описание </label>
                    <div class=" controls">
                        <input type="text" 
                    id="smart_core_folder_meta_description" 
                    name="smart_core_folder[meta][description]"
                    class=" input-block-level not-removable"
                    value="Интернет магазин полезных продуктов"/>
                    </div>
                </div>
                <div id="smart_core_folder_meta_keywords_control_group" class=" control-group">
                    <label for="smart_core_folder_meta_keywords" class=" control-label optional">
                    Ключевые слова </label>
                    <div class=" controls">
                        <input type="text"
                            id="smart_core_folder_meta_keywords"
                            name="smart_core_folder[meta][keywords]"
                            class=" input-block-level not-removable"
                            value="Натуральные продукты, Микориза"/>
                    </div>
                </div>
            </div>
        </div>
        <input type="hidden" id="smart_core_folder__token"
            name="smart_core_folder[_token]"
            class=" input-block-level not-removable"
            value="0a6a-bKsxcMxfCrWQA01PoDaLq78mcEFawmENVrecCs"/>
    </fieldset>
    <div class="control-group">
        <div class="controls">
            <button type="submit" name="update" class="btn btn-success"><i class="icon-ok icon-white"></i> Сохранить</button>
            <a class="btn cmf-cancel" href="/admin/structure/">Отменить</a>
        </div>
    </div>
</form>

В них нужно блок smart_core_folder_meta_control_group оформить как табик http://getbootstrap.com/2.3.2/components.html#navs т.е. будут 2 вкладки: “основные настройки” и “мета тэги”.

В итоге должно получиться примерно вот такая штука http://do.smart-core.org/admin/structure/node/1/

Приведённая выше форма генерируется на этой страничке http://do.smart-core.org/admin/structure/folder/1/

Нужно написать яваскриптик, который не будет зависеть от саймой формы т.е. в твиге достаточно будет написать form(form) и запустить этот явакриптик с указанием имени формы, а он уже преобразует вёрстку на клиенте, чтобы было с табиками.

Логика должна быть примерно такая: если пристутствует блок с id =smart_core_folder_meta_control_group, тогда под <fielset> добавляется код:

<div class="tabbable">
<ul class="nav nav-tabs">
	<li class="active">
		 <a href="#base-setting" data-toggle="tab">Основные настройки</a>
	 </li>
	 <li><a href="#meta-setting" data-toggle="tab">Мета теги</a></li>
 </ul>
 
<div class="tab-content">
<div class="tab-pane active" id="base-setting">

далее отдельно запаковывается форма мета тэгов:

<div class="tab-pane" id="meta-setting">
    <div id="smart_core_folder_meta_description_control_group" class=" control-group">
        <label for="smart_core_folder_meta_description" class=" control-label optional">
            Описание </label>
        <div class=" controls">
            <input type="text"
                   id="smart_core_folder_meta_description"
                   name="smart_core_folder[meta][description]"
                   class=" input-block-level not-removable"
                   value="Интернет магазин полезных продуктов"/>
        </div>
    </div>
    <div id="smart_core_folder_meta_keywords_control_group" class=" control-group">
        <label for="smart_core_folder_meta_keywords" class=" control-label optional">
            Ключевые слова </label>
        <div class=" controls">
            <input type="text"
                   id="smart_core_folder_meta_keywords"
                   name="smart_core_folder[meta][keywords]"
                   class=" input-block-level not-removable"
                   value="Натуральные продукты, Микориза"/>
        </div>
    </div>
</div>

а оставшиеся поля формы запаковываются в <div class=”tab-pane active” id=”base-setting”>

Сейчас формы категорий юниката выглядят так:

https://github.com/Smart-Core/CMS-Sandbox/blob/master/src/SmartCore/Module/Catalog/Resources/views/Admin/category_edit.html.twig#L30

{{ form_start(form, {'attr':{'class':'form-horizontal'}}) }}
        {{ form_errors(form) }}
        <fieldset>
            <div class="tabbable">
                <ul class="nav nav-pills">
                    <li class="active"><a href="#base-settings" data-toggle="tab">{{ 'Base settings'|trans }}</a></li>
                    {% if form.properties %}<li><a href="#cat-properties" data-toggle="tab">{{ 'Properties'|trans }}</a></li>{% endif %}
                    <li><a href="#meta-tags" data-toggle="tab">{{ 'Meta tags'|trans }}</a></li>
                </ul>
                <div class="tab-content">
                    <div class="tab-pane" id="meta-tags">
                        {{ form_widget(form.meta) }}
                    </div>
                    {% if form.properties %}
                    <div class="tab-pane" id="cat-properties">
                        {{ form_widget(form.properties) }}
                    </div>
                    {% endif %}
                    <div class="tab-pane active" id="base-settings">
                        {{ form_widget(form) }}
                    </div>
                </div>
                <div class="control-group">
                    <div class="controls">
                        {{ form_rest(form) }}
                    </div>
                </div>
            </div>
        </fieldset>
        {{ form_end(form) }}

Здесь из-за того, что кнопки заложены в саму форму они отрисовываются в функции form_widget(form), а когда доходит дело до form_restform, там уже нечему отрисовываться, по этому кнопки доступны только в одной вкладке.

Возможно полезный бандл http://bootstrap.braincrafted.com/playground/forms.html

39217 Feb 2014-Мета-тегиHighMediumИсполняется
30%
Task Description

Нужна возможность задания как минимум ключевиков(keywords) и описаний (description) для:
1. разделов, подразделов и страниц
2. Папок каталога (юниката), подпапок и элементов

Будет идеально, если также можно будет задавать title и h1 раздельно (если они отличаются) для перечисленных пунктов.

если теги заданы для раздела, то они должны примениться рекурсивно для всех подразделов и элементов этого раздела. Аналогично для юниката.
Если в каком-то подразделе тег(-и) переопределен, то применяется уже новое значение (переопределенное).

Я думаю это и так понятно. ))


ссылки по теме:


видимо их много ;) например тут http://everzet.com/

38229 Jan 2014-Сортировка нодCriticalVery LowНовая
0%
Task Description

Например сейчас на главной папке подключена нода Виджета с позицией 10 в блок menu, допустим в другой вложенной папке подключена нода Текстера в этот блок, но с позицией 0, но выводится текстер ниже виджета.

34628 Jun 2012-Множественное отображение - централизованное формирован...LowVery LowНовая
0%
Task Description

Вот здесь затронута интересная тема: http://www.php.ru/forum/viewtopic.php?f=5&t=40701&p=328757#p328755

Взгляните на страницу того же Яндекс.Маркета (первое, что пришло на ум для наглядного представления): http://market.yandex.ru/model.xml?CMD=-RR=9,0,0,0-PF=1801946~EQ~sel~1871127-PF=2142398356~EQ~sel~276273303-PF=1801946~EQ~sel~1871127-PF=2142398356~EQ~sel~276273303-PF=2142372765~EQ~sel~337419139-PF=2142372765~EQ~sel~318739075-VIS=470-CAT_ID=432460-EXC=1-PG=10&modelid=7309414&hid=91013

На странице есть блоки "Популярные модификации" и "Интернет-магазины", в них применена сортировка, скажем так, "по-умолчанию". Иногда пользователю может потребоваться не переходя непосредственно по ссылке в раздел Популярные модели или Интернет-магазины, применить сортировку к списку или фильтр. Если эти блоки формируются абсолютно разными нодами, которые могут логически не быть потомками одного общего родителя и вообще не быть никак связаны между собой, как бы вы подошли к решению задачи отображения с разными параметрами этих блоков, каким вы считаете правильное ее решение? Я сам сталкивался с подобным и решал классикой жанра → контроллер/параметр/значение/параметр/значение, это своего рода HMVC - надстройка над прямой однозначной адресацией, так как над блоками формируется новый контроллер (возникает избыточность, но в большинстве случаев вполне допустимая), но впоследствии перешел к использованию компонент.

На что я ответил так:

пример не тот, что вы описываете! ;) дело в том, что зедсь все параметры передаются GET очередью в http://market.yandex.ru/model.xml притом здесь реализована своя логика, в частности запрос можно разложить на следующие части:
[code]
http://market.yandex.ru/model.xml

  ?CMD=
      -RR=9,0,0,0
      -PF=1801946~EQ~sel~1871127
      -PF=2142398356~EQ~sel~276273303
      -PF=1801946~EQ~sel~1871127
      -PF=2142398356~EQ~sel~276273303
      -PF=2142372765~EQ~sel~337419139
      -PF=2142372765~EQ~sel~318739075
      -VIS=470
      -CAT_ID=432460
      -EXC=1-PG=10
  &modelid=7309414
  &hid=91013

[/code]

Как видим, всё толкается в CMD, значит на этом сайте есть некая библиотечка, которая отвечает за формированние данной строки из параметров, которые ей передадут различные модули, также эти же модули могут запрашивать какие-то свои параметры с этой либы. Думаю именно так у них и сделано... и это разумеется тоже можно сделать в движке :) хотя у меня пока таких задач небыло, но предусмотреть на будуще очень даже надо будет (пойду запишу в TODO :) )

29428 Dec 2011-Кеширование нод целиком.MediumLowНовая
0%
Task Description

Нужно сделать для того, чтобы нода даже не запускалась, а ядро брало значение сразу из кеша.

Параметры кеширования будет выдавать сам модуль по аналогии с NodePropertiesFormType.

26513 Nov 2011Назначение прав для всех групп и юзеровMediumVery LowНовая
0%
Task Description

Например можно сделать так:

*|read:0,write:0;1|read:1,write:1;

Это будет означать, что для ВСЕХ групп юзеров будет назначены права read:0,write:0, а затем для группы №1 права read:1,write:1 таким образом даже если в системе изменятся группы юзеров, для этого объекта права будут всегда выстанавливаться по данному принципу.

сейчас видимо будет что-то типа:

*|read:0,write:0;ROLE_ADMIN|read:1,write:1;
26206 Nov 2011-Учет областей при выводе.LowVery LowНовая
0%
Task Description

В случае если шаблон не задействовал все области, которые сгенерировал движок (пустые в том числе), то надо чтобы система оповещала админа об том.

22125 Sep 2011Учет всех параметров $_GETLowVery LowНовая
0%
Task Description

Например можно сделать через класс Request.

Надо учитывать все ожидаемые $_GET ключи, например, чтобы если ожидается запрос:

http://site.ru/?id=1

а пришел

http://site.ru/?id=1&some_key=some_val

то some_key является не ожидаемым ключем и надо выводить ошибку 404.

16110 Jul 2011-Наследование нод в областяхLowVery LowНовая
0%
Task Description

Добавить запланированную возможность включать списки нод папок наследования в области.

Например если в область v_menu добавить список папок 1 и 19 (о системе), то все ноды котрые включены в папку “о системе” не будут отображаться во вложенных папках.

11403 Mar 2011-Редиректы доменов.Very LowVery LowНовая
0%
Task Description

Например сайт может откликаться на 3 домена:

Но основной является первый и чтобы пользователь всегда попадал по нужному адресу на 2-ой и 3-ий настраивается редирект в домен “mysite.ru”

Надо сделать настройку, где админ сайта будет иметь возможность выбирать политику редиректов, либо форсированно на домен с www. либо форсированно без него.

Также использовать 301 редирект.

Статья про зеркала:
http://help.yandex.ru/webmaster/yandex-indexing/site-mirrors.xml


Самый простой вариант - это создать апачу конфик с www поддоменом и закинуть следующие 2 файла:

# .htaccess
<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^.*$ index.php [L]
</IfModule>
<?php
// index.php
header('Location: http://mysite.ru' . $_SERVER['REQUEST_URI'], true, 301);

Также подумать, может быть можно этот редирект выполнить на nginx.

5711 Jan 2011-Режим технического обслуживания.Very LowDeferНовая
0%
Task Description

https://github.com/lexik/LexikMaintenanceBundle/blob/master/Resources/doc/index.md

3926 Dec 2010Механизм default_node_actionVery LowVery LowНовая
0%
Task Description

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

Например:

http://mysite.ru/about/ - обычная страница.

сейчас для редактирования надо явно указать ИД ноды и действие:
http://mysite.ru/about/action_5/edit/

но красивее было бы так:
http://mysite.ru/about/edit/

Showing tasks 1 - 21 of 21 Page 1 of 1

Available keyboard shortcuts

Tasklist

Task Details

Task Editing