Сообщение об ошибке

  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 126 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_prepare() (строка 131 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).
  • Deprecated function: Function create_function() is deprecated в функции _geshifilter_process() (строка 231 в файле /var/www/lsoft/sites/all/modules/geshifilter/geshifilter.pages.inc).

Web-development

test

Профилирование запросов и статистика в СУБД MySQL/MariaDB

Что должен делать IT-шник постоянно? Правильно, это знает наверное каждый - учиться. И вот расширяя кругозор и углубляясь все больше и больше в использование Баз данных я сделал очередной виток в поиске полезной информации по инструментарию который использую.

test

Прикольный и удобный FileManager/ImageManager для TinyMCE 4 или другого Wisywig

Responsivefilemanager

Действительно прикольный и удобный файлменеджер для загрузки файлов и картинок. Скачать можно на самом сайте плагина.

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

test

Простая проверка на заполненность полей перед отправкой формы

Валидация
Просто еще небольшая заметка на память, чтобы не копаться по всему интернету. HTML5+CSS3 сейчас сильно упрощает жизнь. Раньше столько сложностей было в том чтобы сделать резиновые формы, а сейчас достаточно использовать условные единицы измеряемые в %% от ширины(vw) или высоты(vh) viewport-а. Как многие знают, размер шрифта используемый единицы em, %% или другие, казалось бы динамические единицы измерения на самом деле берут всего-лишь значение базового шрифта, но сейчас можно использовать все те же vw и vh для задания пропорционального всем другим элементам размера шрифта. Замечу что в хроме и хромиуме, как возможно и во всем остальном на основе webkit, есть баг, при изменении размера окна, размер шрифтов автоматически не пересчитывается. Но этот баг вроде должны поправить к новым версиям.

Ну а сейчас тема немного о другом, раньше для проверки валидации формы на заполнение важных полей, нужно было использовать JS код, сейчас же это заменяется всего одним словом required внутри инпута. Конечно это не отменяет важности проверки на стороне сервера, но на стороне фронта все же проще.

Сама форма, к примеру

test

CKEditor 4.3 и загрузка картинок в Kohana 3 Framework

Кратко и по сути о том как включить загрузку картинок для CKEditor и прикрутить все это к контроллеру Kohana 3. Ничего сложного, руководствовался статьей

В ckeditor/config.js добавляем строчку:

CKEDITOR.editorConfig = function( config ) {
// Define changes to default configuration here. For example:
// config.language = 'fr';
// config.uiColor = '#AADC6E';
    config.filebrowserUploadUrl = '/upload/image';
};

Добавляем контроллер вида:

class Controller_Images extends Controller_Template
{

    public function action_upload(){
        $callback = $_GET['CKEditorFuncNum'];
        $error = '';
        if (!empty($_FILES['upload']['tmp_name'])) {
            $fileload = $_FILES['upload'];
//папку для картинок создаем заранее и даем права на запись
            $directory = $_SERVER["DOCUMENT_ROOT"]."/public/images/upload/";
            if ($file = Upload::save($fileload, NULL, $directory)) {
                $filename = md5(date("YmdHis").rand(5,50));
                $img = Image::factory($file);
                $img->render("jpg"); //фотки ведь желательно сохранять именно в jpg

                $img->save($directory . $filename . '.jpg');
                unlink($file);
                $http_path = '/public/images/upload/'.$filename.".jpg";
            }else {
                $error = 'Some error occured please try again later';
                $http_path = '';
            }
            echo "<script type="text/javascript">window.parent.CKEDITOR.tools.callFunction(".$callback.",  "".$http_path."", "".$error."" );</script>";
        }
    }
}

Не забываем дать доступ к роуту в bootstrap.php

Route::set('images', 'upload/image')
    ->defaults(array(
        'controller' => 'images',
        'action'     => 'upload',
    ));

Все. В "Вставить картинку" в CKEditor-е появиться вкладка Загрузить.

test

Небольшой сниплет таймера обратного отсчета в секундах на JavaScript

Таймер обратного отсчета
Утянул со stackoverflow

var count=30;
var counter=setInterval(timer, 1000); //1000 равно 1 секунде

function timer()
{
  count=count-1;
  if (count <= 0)
  {
     clearInterval(counter);
     //Здесь делаем что-то после того как таймер достиг нуля
     return;
  }

  //здесь добавляем код, к примеру меняющий количество секунд в диве
//document.getElementById("timer").innerHTML=count + " секунд";
}

Все просто и красиво

test

MongoDB вместо MySQL/MariaDB как основная СуБД. Небольшие впечатления.

MongoDB
Если вы используете для своего проекта VPS/VDS сервер, вы вполне можете заменить реляционную базу данных на MongoDB. Познакомившись поближе вы увидите все те же знакомые понятия что и в реляционных базах, такие как: база данных, коллекция(собственно набор документов, а-ля таблица без жесткой структуры по полям), документы(те же кортежи из реляционных баз). Инструменты бекапа/восстановления присутствуют. Выборка данных тоже. Врапперы к PHP и другим языкам тоже.

Хороший мануал
Официальная дока по врапперу к PHP

Прикрутить MongoDB к проекту вместо MySQL\MariaDB не составит практически никаких усилий, а при грамотном подходе даст не мало преимуществ. Ставиться все очень просто из дистрибутива. Впечатления от монго хорошие. Может немного позже напишу более подробно о нем.

Еще немного ссылок внутри материала.

test

Подключение платежной системы 2checkout к вам на сайт

2checkout direct checkout

Содержимое

  • Предисловие
  • Регистрация и одобрение.
  • Direct и не Direct
  • Прикручиваем саму платежку
  • Обработка платежа вашим сайтом после оплаты

Предисловие

Все что кажется сложным, зачастую только кажется таким. Вот тоже самое можно сказать и про платежную систему 2checkout. Те сайты что работают с буржуйными платежами очень часто подключены к данной платежной системе. Я расскажу в кратце как работать с этой платежной системой. Особенно с учетом англоязычного саппорта, нашим разработчикам это должно немного помочь.

Итак, 2checkout, имеет достаточно обширную документацию по своему API и даже несколько подготовленных заранее библиотек для разных языков программирования. Но реально не хватает кратеньких примеров. Так вот, все что вам нужно для того чтобы прикрутить эту систему:

Регистрация и одобрение.

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

Direct и не Direct

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

Прикручиваем саму платежку

Вам нужно разместить саму форму платежной системы у себя на сайте. Используем вариант не Direct платежа:

test

Правила для Ассоциаций Содержит-Один(HasOne) и Принадлежит(BelongsTo) в ExtJS

Правила для Ассоциаций Содержит-Один(HasOne) и Принадлежит(BelongsTo) в ExtJS

  1. Помещайте прокси в модель, пока у вас не будет веской причины как в случае [1]
  2. Всегда используйте полное имя модели
  3. Всегда устанавливайте getterName
  4. Всегда устанавливайте setterName
  5. Всегда устанавливайте associationKey, если подключаемый обьект возвращает тот же ответ что и текущий
  6. Всегда устанавливайте foreignKey, если хотите загружать связанный обьект только по надобности
  7. Делайте как можно короче instanceName
  8. Геттер ведет себя по разному в зависимости от того, иностранные объект загружается или нет. Если он загружен, внешний объект возвращается. В противном случае, вам нужно передать в функцию обратного вызова, чтобы получить его.
  9. Нужно установить название свойства, если планируете перегрузить ассоциацию.
  10. Вам не нужно отношение belongsTo для работы с hasMany
  11. Установите primaryKey если ID поле родителя не "id"
  12. Иногда вам нужно использовать uses или require для ассоциации belongsTo.
  13. Вызов сеттера setter() не создает экземпляр. Установите object.belongsToInstance = obj если вызываете setter().

...

test

ExtJS 4: Отображение связанных моделей в сетке(Grid) Перевод

Примечание переводчика

Буквально пару дней назад я делал перевод статьи о том как использовать контроллеры и представления в ExtJS согласно архитектуре MVC. Но в ней не было использования моделей, хотя основы использования фреймворка вполне прекрасно обозначались. И вот новый перевод, небольшой но достаточно содержательный. Мы рассмотрим как использовать связанные модели и отображать их в сетке. Думаю это далеко не последний мой перевод по теме ExtJS, лишь текущий.

Если кому не понравиться перевод, можете смело читать в оригинале: Rendere association values in a grid panel

Перевод

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

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

В моем примере у меня есть Документы(Documents) связанные с Компонентами(Components). В нашем натуральном языке обработки[NLP] модель строит приложение, каждый документ может быть использован в разных аспектах модели. В любом случае, Компоненты могут быть изменены, удалены из системы, или добавлены новые, по этому я отслеживаю их как отдельные обьекты и ассоциирую их с обьектом Документ.

test

ExtJS: Приложение с авторизацией и меню

Форма входа

Предисловие, мое как переводчика.

Как обычно, ру-интернет сильно отстает в плане хороших примеров. Не скажу что их нет, но их несоизмеримо меньше чем в англоязычном. А ведь иногда так хочется почитать нормальные статьи на русском языке. В этом раз я сделаю перевод статьи о написании Приложении написанного на ExtJS 4 с формой авторизации и меню.

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

Оригинал по ссылке: http://blog.jardalu.com/2013/5/7/user-login-sencha-extjs

И да, спасибо автору этого материала.


В предшествующей статье(простая форма авторизации), мы создали простое форму авторизации с помощью библиотеки ExtJS Sencha. На сколько не была бы полезна предшествующая статья, все что она делала - показывала форму(представление). В этой статье мы покажем как изменять экран(представление) если авторизация прошла успешно.

В этой статье используется архитектура MVC фреймворка ExtJS. Предшествующая статья не использовала эту архитектуру. Сказать точнее, мы будем использовать только VC(Views,Controller) часть из MVC. MVC состоит из Модели(Model), Представления(View) и Контроллера(Controller). "The MVC Application Architecture" хорошая статья для понимания их MVC архитектуры. В общем-то их архитектура не отличается от стандартного паттерна, всего-лишь формализует путь написания, хранения и использования моделей, контроллеров и представлений.

test

ExtJS Grid(компонент сетка) + Ajax(Kohana 3 framework) + ORM. Пагинация. Сортировка.

ExtJs

Введение

Нужно использовать сетку(Grid) в ExtJS, с ее возможностью пагинации и сортировки данных на стороне сервера.

Описание

Как подключать и использовать ExtJS написано много. Но иногда не хватает деталей. Итак, пример того как в компоненте сетка(Grid) использовать данные получаемые в ajax. Эту часть я делал на фреймворке Kohana 3, но не думаю что у вас возникнут особые сложности перевести все это в свой нужный код. Так как код на Kohana 3, то используется HMVC(MVC). Сейчас немного о логике. Данные взяты из прототипа одного проекта, по этому могут быть не совсем полными, но основную суть передают. У нас есть основной контроллер на который мы переходим вызывая отображение нашей страницы с таким вот кодом:

test

Подборка статей по интерфейсам(UI,UX,Юзабилити) и статейка по SEO

Хабр
Отобрал достаточно интересные и содержательные статьи по UI, UX и SEO. На текущий момент выделил для себя именно их. Тут только части материала. Все остальное можете прочитать перейдя по ссылкам.


Грань между UI и UX

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

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

Дональд Норман

Проблема заключается в том, что если процесс, обслуживаемый интерфейсом, сложный и запутанный, то и интерфейс будет такой же. Процесс мутный — интерфейс мутный. У вас будут россыпи тогглов, чекбоксов и списков, а перед использованием интерфейса, нужно будет пройти 2-ух недельные курсы подготовки, и сдать экзамен.

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

test

Kohana 3.3 MySQLi драйвер

Kohana 3
В один прекрасный момент подключение mysql было обьявлено deprecated и потребовалось использовать mysqli.
Сам драйвер можно найти здесь. Для подключения драйвера достаточно просто закинуть его содержимое в папку modules/database/ и

Страницы

Subscribe to RSS - Web-development