3rd party libraries в С5.7

Любая помощь по установке/настройке/модификации concrete5

3rd party libraries в С5.7

Сообщение linuxoidoz » 01 июн 2015, 16:04 ,  »  Сообщение:#1

в С5.6 была папка /libraries/3rdparty, например с securimage библиотекой. А как теперь в С5.7 это делается? Теперь нету таких библиотек. Как 3rdparty библиотеку использовать теперь в своем блоке?

Спасибо.
https://lizardstudio.ru

Дизайн, разработка и продвижение веб-сайтов и интернет магазинов
Сахалин, Дальний Восток... Россия и ЕАЭС

https://www.concrete5.org/profile/-/view/21733/
Аватара пользователя
linuxoidoz
 
Сообщения: 35
Зарегистрирован: 27 май 2015, 09:51

Re: 3rd party libraries в С5.7

Сообщение cmsservice » 01 июн 2015, 16:07 ,  »  Сообщение:#2

теперь это директория vendor
С уважением, Константин
http://Переделка-сайтов.РФ
Индивидуальные решения на платформе Concrete5 для театров и производственно-торговых компаний.
Аватара пользователя
cmsservice
 
Сообщения: 763
Зарегистрирован: 10 окт 2010, 00:10
Откуда: Москва

Re: 3rd party libraries в С5.7

Сообщение guyasyou » 01 июн 2015, 16:56 ,  »  Сообщение:#3

меня PhpStorm выручает в этом плане.
Начинаешь вводить
$a = new Secur... и он уже выводит классы Securimage
для статических
$a = Secur...

Да и вообще, очень облегчает разработку в 5.7 с неймспейсами.
Я уже не лажу по файлам в поисках чего либо.
Не представляю как я раньше в notepad++ работал, хотя и ща пользуюсь для мелких правок, особенно удаленно.
В phpStorm бесит только одно: вкладки херово реализованы, хочу как в notepad++, а тут они перестраиваются многоэтажно, путаются. Можно включить чтобы в строку, но тогда скрывает те что не влезли. Бесит!

P.S. $a лишь для наглядности.
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 559
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск

Re: 3rd party libraries в С5.7

Сообщение linuxoidoz » 01 июн 2015, 17:39 ,  »  Сообщение:#4

не, vendor все-таки не то. Я нашел concrete/src/Captcha/SecurimageController.php. Все сделал, все работает вроде правильно. Но оказывается нету папки application/src. А как же тогда можно оверрайд SecurimageController класс< чтобы изображение изменить?

Спасибо.
https://lizardstudio.ru

Дизайн, разработка и продвижение веб-сайтов и интернет магазинов
Сахалин, Дальний Восток... Россия и ЕАЭС

https://www.concrete5.org/profile/-/view/21733/
Аватара пользователя
linuxoidoz
 
Сообщения: 35
Зарегистрирован: 27 май 2015, 09:51

Re: 3rd party libraries в С5.7

Сообщение cmsservice » 01 июн 2015, 18:16 ,  »  Сообщение:#5

guyasyou писал(а):меня PhpStorm выручает в этом плане.

Мы NetBeans юзаем. Шикарная среда если один раз настроить. Но есть минус, писана на Java, память жрет если много файлов открыто. :)
С уважением, Константин
http://Переделка-сайтов.РФ
Индивидуальные решения на платформе Concrete5 для театров и производственно-торговых компаний.
Аватара пользователя
cmsservice
 
Сообщения: 763
Зарегистрирован: 10 окт 2010, 00:10
Откуда: Москва

Re: 3rd party libraries в С5.7

Сообщение cmsservice » 01 июн 2015, 18:28 ,  »  Сообщение:#6

linuxoidoz писал(а):не, vendor все-таки не то. Я нашел concrete/src/Captcha/SecurimageController.php. Все сделал, все работает вроде правильно. Но оказывается нету папки application/src. А как же тогда можно оверрайд SecurimageController класс< чтобы изображение изменить?

Все то, мы же про 3rdparty говорим, суть - сторонние библиотеки. Сейчас в C5 привели в соответствие все. Все свои библиотеки в Src, а все сторонние в vendor и это правильно, особенно учитывая поддержку composer.json

Теперь что касается перекрытия. Они все выполняются через переопределение сопоставлений неймспейсов. Например, если я хочу перекрыть TextHelper, я не могу просто положить файл в соответствующую директорию, как в 5.6. Теперь, допустим у меня есть пакет my_pkg и в нем мой новый хелпер, перекрывающий системный. Тогда я должен директорию /packages/my_pkg/src/Utility/Service положить файл с именем Text.php, в котором моя версия хелпера. Неймспейс сооответственно будет Concrete\Package\TheaterManagment\Src\Utility\Service. А потом в контроллере пакета, реализовать следующий метод:
Код: Выделить всё
public function on_start() {
  \Core::make('app')->singleton('helper/text', 'Concrete\Package\MyPkg\Src\Utility\Service\Text');
}

И тогда мой хелпер заменит системный. Аналогично нужно поступать и с другими перекрытиями.

На самом деле это хорошо, лучше чем было в 5.6, т.е. теперь можно в своем пакете нести нужные переопределения, не раскидывая файлы по всей системе.
С уважением, Константин
http://Переделка-сайтов.РФ
Индивидуальные решения на платформе Concrete5 для театров и производственно-торговых компаний.
Аватара пользователя
cmsservice
 
Сообщения: 763
Зарегистрирован: 10 окт 2010, 00:10
Откуда: Москва

Re: 3rd party libraries в С5.7

Сообщение guyasyou » 01 июн 2015, 20:04 ,  »  Сообщение:#7

Кстати, насчет новых переопределений, они полностью выкидывают старый класс? или его можно наследовать?

Ну вот если орогинальный класс лежит в /Concrete/Folder/Class, а мой класс в App/Folder/Class.
Я переопределили /Concrete/Folder/Class в App/Folder/Class
И в App/Folder/Class буду наследовать /Concrete/Folder/Class - рекурсия???
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 559
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск

Re: 3rd party libraries в С5.7

Сообщение cmsservice » 01 июн 2015, 21:08 ,  »  Сообщение:#8

Хелперы нормально наследуем, нет там никакой рекурсии ибо неймспейсы разные
С уважением, Константин
http://Переделка-сайтов.РФ
Индивидуальные решения на платформе Concrete5 для театров и производственно-торговых компаний.
Аватара пользователя
cmsservice
 
Сообщения: 763
Зарегистрирован: 10 окт 2010, 00:10
Откуда: Москва

Re: 3rd party libraries в С5.7

Сообщение linuxoidoz » 02 июн 2015, 13:39 ,  »  Сообщение:#9

я скопировал SecurimageController.php из concrete/src/Captcha/ в папку своего пакета packages/my_package/src/Captcha/. SecurimageController.php содержит такой код:

packages/my_package/src/Captcha/SecurimageController.php
Код: Выделить всё
<?php
namespace Concrete\Package\MyPackage\Src\Captcha;

use Securimage;
use Securimage_Color;

class SecurimageController extends \Concrete\Src\Captcha\SecurimageController
{
    protected $securimage;

    public function __construct()
    {
   $this->securimage = new Securimage();
   $this->securimage->image_width = 237;
   $this->securimage->image_height = 60;
   $this->securimage->image_bg_color = new Securimage_Color('#F0F0F0');
   $this->securimage->line_color = new Securimage_Color('#333333');
   
   $this->securimage->use_multi_text = true;
   $this->securimage->multi_text_color = array(
      new Securimage_Color('#FF0000'),
      new Securimage_Color('#0000FF'),
      new Securimage_Color('#333333')
   );
   $this->securimage->text_color = new Securimage_Color('#FF0000');
   $this->securimage->use_transparent_text = true;
   $this->securimage->text_transparency_percentage = 50;
   
   $this->securimage->image_signature = 'MY_DOMAIN';
   $this->securimage->signature_color = new Securimage_Color('#333333');
   $this->securimage->code_length = rand(4, 6);
   $this->securimage->num_lines = rand(3, 10);
       
    }
}

packages/my_package/blocks/my_package/controller.php
Код: Выделить всё
    public function on_start() {
        \Core::make('app')->singleton('validation/captcha', 'Concrete\Package\MyPackage\Src\Captcha');
    }


Но никакого изменения не видно, используется системный контроллер.
Последний раз редактировалось linuxoidoz 02 июн 2015, 15:50, всего редактировалось 3 раз(а).
https://lizardstudio.ru

Дизайн, разработка и продвижение веб-сайтов и интернет магазинов
Сахалин, Дальний Восток... Россия и ЕАЭС

https://www.concrete5.org/profile/-/view/21733/
Аватара пользователя
linuxoidoz
 
Сообщения: 35
Зарегистрирован: 27 май 2015, 09:51

Re: 3rd party libraries в С5.7

Сообщение cmsservice » 02 июн 2015, 13:59 ,  »  Сообщение:#10

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

Стесняюсь спросить, а каких изменений Вы ждете? :)
С уважением, Константин
http://Переделка-сайтов.РФ
Индивидуальные решения на платформе Concrete5 для театров и производственно-торговых компаний.
Аватара пользователя
cmsservice
 
Сообщения: 763
Зарегистрирован: 10 окт 2010, 00:10
Откуда: Москва

Re: 3rd party libraries в С5.7

Сообщение linuxoidoz » 02 июн 2015, 14:03 ,  »  Сообщение:#11

что captcha картинка будет с моими цветами, количество цифр будет меняться, MY_DOMAIN появится

а в контроллере пакета что-то надо менять/добавлять?
https://lizardstudio.ru

Дизайн, разработка и продвижение веб-сайтов и интернет магазинов
Сахалин, Дальний Восток... Россия и ЕАЭС

https://www.concrete5.org/profile/-/view/21733/
Аватара пользователя
linuxoidoz
 
Сообщения: 35
Зарегистрирован: 27 май 2015, 09:51

Re: 3rd party libraries в С5.7

Сообщение cmsservice » 02 июн 2015, 14:23 ,  »  Сообщение:#12

Вопрос: а зачем перекрывать системную, свою версию на ее основе написать, назвать типа Securimage+ и установить в систему из пакета не судьба? В чем смысл курочить системную?
С уважением, Константин
http://Переделка-сайтов.РФ
Индивидуальные решения на платформе Concrete5 для театров и производственно-торговых компаний.
Аватара пользователя
cmsservice
 
Сообщения: 763
Зарегистрирован: 10 окт 2010, 00:10
Откуда: Москва

Re: 3rd party libraries в С5.7

Сообщение linuxoidoz » 02 июн 2015, 14:52 ,  »  Сообщение:#13

потому что не хочу все функции заново переписывать. Мне только несколько свойств изображения надо поменять. + пойму как системные контроллеры/хелперы перекрывать.

так как это сделать-то? буду очень благодарен.

ну а ради интереса, как оригинальный Securimage библиотеку привентить?
https://lizardstudio.ru

Дизайн, разработка и продвижение веб-сайтов и интернет магазинов
Сахалин, Дальний Восток... Россия и ЕАЭС

https://www.concrete5.org/profile/-/view/21733/
Аватара пользователя
linuxoidoz
 
Сообщения: 35
Зарегистрирован: 27 май 2015, 09:51

Re: 3rd party libraries в С5.7

Сообщение cmsservice » 02 июн 2015, 15:21 ,  »  Сообщение:#14

linuxoidoz писал(а):потому что не хочу все функции заново переписывать. Мне только несколько свойств изображения надо поменять.

Так зачем все-то, унаследуйся от системной и перекрой в ней нужные методы, это же азы ООП. В результате получишь новый класс, который можешь устанавливать как новую капчу. В системе у тебя две капчи, системная и твоя. Выбирай в настройках свои и вуаля, она во всех формах начала использоваться.
С уважением, Константин
http://Переделка-сайтов.РФ
Индивидуальные решения на платформе Concrete5 для театров и производственно-торговых компаний.
Аватара пользователя
cmsservice
 
Сообщения: 763
Зарегистрирован: 10 окт 2010, 00:10
Откуда: Москва

Re: 3rd party libraries в С5.7

Сообщение linuxoidoz » 02 июн 2015, 15:26 ,  »  Сообщение:#15

так я это и пытаюсь сделать! но что-то не так.я не совсем понимаю как это все в С5 работает, т.к. полно всяких контроллеров и хелперов

Я вот наследую класс SecurimageController в коде выше. Никакие методы мне переписывать/перекрывать не надо, т.к. системные работают.

А если использовать свой класс, то как его загружать? какое отношение $captcha = Loader::helper('validation/captcha'); имеет к SecurimageController?
https://lizardstudio.ru

Дизайн, разработка и продвижение веб-сайтов и интернет магазинов
Сахалин, Дальний Восток... Россия и ЕАЭС

https://www.concrete5.org/profile/-/view/21733/
Аватара пользователя
linuxoidoz
 
Сообщения: 35
Зарегистрирован: 27 май 2015, 09:51

След.

Вернуться в Помощь по concrete5

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

cron