Pull to refresh
1
0

Пользователь

Send message

Опять вконтакте: о старом по-новому

Reading time1 min
Views13K
Пару месяцев назад, проскочила новость о том, как узнать фамилию и имя со страницы за которой закреплен интересующий нас телефонный номер.

Привожу инструкцию:
1. Заходим на мобильную версию сайта m.vk.com ( именно мобильная, на обычной спрашивает Фамилию)
2. Жмем «Забыли пароль?»
3. Вводим номер телефона
4. Получаем имя и аватар
Читать дальше →

Готовая сборка интернет-магазина на MODX Revolution

Reading time10 min
Views109K
Часто, когда разработчик выбирает движок для очередного магазина, он обычно оценивает этот вопрос по нескольким критериям:
  • Платный/бесплатный (если платный, то сколько).
  • Какой функционал есть «из коробки».
  • Насколько легко докрутить какой-то свой функционал.
  • Как много он потянет товаров, чтобы на хостинг не разориться.
  • Насколько гибкие политики безопасности, чтобы обеспечить совместную работу различных отделов.
  • Какие платежные системы поддерживаются.

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

В конце статьи видео с кратким обзором движка и двумя способами установки

Важно!!! Забыл сказать: кто поленится посмотреть видео, но развернет у себя сборку, логин/пароль в админку по умолчанию: admin/admin.


Демо-сайт.


Прежде чем читать дальше, советую покликать демо-версию сборки.

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

Основа движка (а так же довольно большая предыстория)


За основу был взят фреймворк MODX Revolution. Только не торопитесь плеваться и закрывать страницу. Это не в точности тот MODX, с которым вам возможно приходилось встречаться. Я с MODX работаю с начала 2009-го года, и знаю его вдоль и поперек. И да, я как и многие сталкивался со многими его минусами (типа шаблонов и чанков в базе данных, тормоза и т.п.). Плюс к этому до знакомства с MODX много работал с различными самописками и другими движками, и на MODX-е я остался именно за его гибкость. Да, мне не все в нем нравится, но он позволяет с легкостью многое в нем изменить, при этом не трогая самого ядра. В процессе у меня появилось несколько компонентов, которые дополняют или меняют определенный функционал MODX-а. Вот парочка наиболее важных из них:
phpTemplates — позволяет статические MODX-шаблоны вызывать как обычные php-файлы.
modxSmarty — Подключает для фронта шаблонизатор Smarty и дополняет его некоторыми плюшками, обеспечивая тесное взаимодействие с самим MODX-ом.
shopModx — модуль для разработки интернет-магазинов.

В итоге MODX обретает не только полноценную шаблонизацию, но и гораздо бОльшую производительность. Сайты с десятками тысяч документов работают с откликом 0,02 — 0,6 секунд. Плюс к этому можно практически полностью забить на синтаксис самого MODX-а, и если вы умеете программировать на php и знаете Smarty — то здесь в разработке у вас никаких проблем не возникнет.

Но одна из самых важных вещей в MODX-е, которая точно меня держит цепями — это система пакетов (модулей для MODX-а). Она реально классная. Я даже написал модуль, который позволяет создавать свои собственные репозитории пакетов. Это особенно полезно различным веб-студиям и активным разработчикам. При этом самая вкусняшка заключается в том, что упаковывать можно не только отдельные модули, но и вообще все что угодно на сайте, хоть целиком, хоть по отдельности, хоть весь сайт вообще. Так появились снапшоты MODX-сайтов. Изначально это было реализовано только на самом modxcloud.com (официальный хостинг от разработчиков MODX-а), но совершенно без документации и каких-либо релизов ими был выложен скрипт vapor, который предназначался для того, чтобы любой мог сделать снимок своего сайта и закинуть его на modxcloud.com. При этом обратная связь как бы и не подразумевалась (то есть брать снимки с modxcloud.com и разворачивать на любом своем хостинге). Не буду вдаваться в подробности, но я взял этот vapor, модифицировал его и добавил ему еще один скрипт (import.php). Теперь с помощью этого скрипта можно как делать снимки сайтов, так и разворачивать их поверх чистого сайта. Скачать мой vapor можно из официального репозитория. И вот как раз с этим вапором я взял курс не только на отдельные модули, но и на готовые сборки сайтов.

В чем смысл таких сборок?

Смысл в том, что когда на проекте используется сразу несколько каких-то отдельных компонентов, которые совместно должны дать какой-то ожидаемый результат, важно не только их наличие, но и тонкая настройка, чтобы обеспечить наилучший эффект + максимальную гибкость. И понятно, что для этого надо не только очень хорошо их знать, но и иметь опыт применения, знать как лучше сделать, какие подводные камни бывают и т.п. А вот если дать разработчику уже готовый сайт, где уже все установлено и настроено, то потолок вхождения и объем работ снижаются в разы.
Вот эта сборка как раз и есть готовый интернет-магазин на базе моих и стандартных модулей, обеспечивая наилучшую производительность, гибкость и управляемость.

Что уже есть в этой сборке?


  • Добавлен компонент Billing. На этом модуле завязано все, что связано с заказами, оплатой и т.п.
  • Корзина перестала существовать отдельно. Теперь Корзина — это еще не оформленный Заказ (Order). Теперь даже не оформленные заказы хранятся в базе данных, что как минимум позволяет видеть кого что интересует, а так же определять реальный процент конверсии и выявлять возможные ошибки.
  • Компонент Basket (Корзина) остался, но почти все, что связано с самими заказами, перенесено в Billing. Basket и дальше останется отдельным модулем, а в Billing-е будет только необходимый минимум логики. Рассчет на то, что сам механизм заказа, оплаты и т.п. можно будет реализовывать в любых сторонних модулях, которые будут взаимодействовать с биллингом.
  • Добавлен и сверстан новый шаблон по умолчанию с использованием bootstrap. Много всяких аджаксовых плюшек и полноценное JS-API.
  • Добавлен табличный редактор документов.
  • Добавлено управление заказами.
  • Добавлен личный кабинет пользователя, регистрация, смена пароля, восстановление пароля и т.п.
  • Настроена регистрация через Login, смена/восстановление пароля и т.п.
  • Добавлен модуль modHybridAuth (авторизация через социальные сети). Пока четко проверены Twitter, Facebook и Google, но должны и другие работать.
  • Подключен сервис оплаты Robokassa.
  • Настроены политики безопасности:
    • Контент-менеджер;
    • Администратор магазина;
    • Менеджер магазина;
    • Продвинутый менеджер магазина.



Что дальше делать с этим сайтом после установки?


Делаете копию шаблона и меняете в нем все, что угодно. Шаблонизация на Smarty, входные данные массивами, все процессоры на классах. То есть не трогая ядра, можно переделать сайт как угодно.

Пример, как добавлять еще платежные системы

Вот у нас есть оплата через робокассу, и стоит задача прикрутить еще какой-нибудь способ оплаты. Посмотрим, как это делается.

Это базовый процессор для любых типов оплаты.
<?php

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

abstract class modWebPaymentsCreateProcessor extends modObjectCreateProcessor{
    public $classKey = 'Payment';
    
    protected $BillingProcessorsPath;
    
    public function checkPermissions() {
        
        // Проверяем подпись платежной системы
        $ok = $this->checkSignature();
        if($ok !== true){
            $this->error($ok);
            return false;
        }
        
        return parent::checkPermissions();
    }
    
    public function initialize(){
        
        $this->BillingProcessorsPath = MODX_CORE_PATH . 'components/billing/processors/';
        
        $this->setDefaultProperties(array(
            'currency_id'  => $this->modx->getOption('shopmodx.default_currency'),
        ));
        
        if(!$this->getProperty('paysystem_id')){
            return $this->error("Не был получен ID платежной системы");
        }
        
        return parent::initialize();
    }
    
    public function beforeSet(){
        
        $this->setProperties(array(
            "createdby" => $this->modx->user->id ? $this->modx->user->id : null,
            "date"      => time(),
        ));
        
        return parent::beforeSet();
    }
    
    public function beforeSave(){
        if(
            !$currency_id = (int)$this->getProperty('currency_id')
            OR !$currency = $this->modx->getObject('modResource', $currency_id)
            OR ! $currency instanceof ShopmodxResourceCurrency
        ){
            return $this->error("Не был получен объект валюты");
        }
        
        if(
            !$paysystem_id = (int)$this->getProperty('paysystem_id')
            OR !$paysystem = $this->modx->getObject('Paysystem', $paysystem_id)
            OR ! $paysystem instanceof Paysystem
        ){
            return $this->error("Не был получен объект платежной системы");
        }
        
        // Проверяем, если указан счет платежной системы, то надо убедиться, что 
        // он еще не числится в биллинге
        if($paysys_invoice_id = $this->object->get('paysys_invoice_id')){
            if($this->modx->getCount($this->classKey, array(
                'paysys_invoice_id' => $paysys_invoice_id,
                'paysystem_id'      => $paysystem_id,
            ))){
                return $this->error("Данный счет уже создан в системе.");
            }
        }
        
        $this->object->addOne($currency);
        $this->object->addOne($paysystem);
        
        return parent::beforeSave();
    }
    
    /*
        Обязательно надо прописывать метод, в котором будет выполняться проверка 
        подписи с сервера платежной системы
    */
    abstract protected function checkSignature();
    
    protected function log($msg, $level = null){
        if($level === null){
            $level = xPDO::LOG_LEVEL_INFO;
        }
        $this->modx->log($level, "[Basket - ".__CLASS__."] {$msg}");
        $this->modx->log($level, print_r($this->getProperties(), true));
        return $msg;
    }
    
    protected function error($msg){
        return $this->log($msg, xPDO::LOG_LEVEL_ERROR);
    }
    
    /*
        Логируем все ошибки процессора, на всякий случай
    */
    public function failure($msg = '',$object = null) {
        $this->error($msg);
        if(!empty($this->object) && is_object($this->object)){
            $this->error(print_r($this->object->toArray(), true));
        }
        return parent::failure($msg,$object);
    }
    
    public function cleanup() {
        /*
            // Если оплата прошла успешно, то обновляем статус заказа
        */
        if($order_id = $this->object->get('order_id')){
            $this->modx->runProcessor('mgr/orders/status/pay', array(
                'order_id'  => $order_id,
            ), array(
                'processors_path' => $this->BillingProcessorsPath,    
            ));
            // На всякий случай сбрасываем счетчик ошибок, если вдруг в вызываемом
            // процессоре были ошибки
            $this->modx->error->reset();
        }
        
        return $this->success($this->getSuccessMessage(), $this->object);
    }
    
    protected function getSuccessMessage(){
        return '';
    }
}

return 'modWebPaymentsCreateProcessor';


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

А вот расширяющий процессор конкретно для робокассы:
<?php
/*
    Проводка платежа от робокассы
*/

require_once dirname(dirname(__FILE__)). '/create.class.php';

class modWebPaymentsRobokassaCreateProcessor extends modWebPaymentsCreateProcessor{
    
    public function initialize(){
        
        $this->setProperties(array(
            "paysystem_id"  => $this->modx->getOption('robokassa.bill_serv_id'),
        ));
        
        return parent::initialize();
    }
    
    /*
        Проверяем подпись с робокассы
    */
    protected function checkSignature(){
        
        $mrh_pass2 = $this->modx->getOption('robokassa.mrh_pass2');

        // Параметры, передаваемые в запросе от робокассы
        $crc        = mb_strtoupper($this->getProperty('SignatureValue'));
        $out_sum    = $this->getProperty('OutSum');
        $inv_id     = $this->getProperty('InvId');
        $shp_aid    = $this->getProperty('shp_aid'); 
        $shp_order  = $this->getProperty('shp_order', null);
        $shp_trff   = $this->getProperty('shp_trff');
        $shp_uid    = $this->getProperty('shp_uid');
         
        $my_crc = mb_strtoupper(md5("{$out_sum}:{$inv_id}:{$mrh_pass2}:shp_aid={$shp_aid}:shp_order={$shp_order}:shp_trff={$shp_trff}:shp_uid={$shp_uid}"));
        
        $this->modx->log(xPDO::LOG_LEVEL_INFO, "[Robokassa - robokassa.payResult]", print_r($_REQUEST, true));
        
        // проверка корректности подписи
        if ($my_crc !=$crc){
            $error = "[Robokassa - robokassa.payResult] - Неверная подпись. Получена: '{$crc}'. Должна быть: '{$my_crc}'";
            $this->modx->log(xPDO::LOG_LEVEL_ERROR, $error);
            return "bad sign";
        } 
        
        // else
        $this->setProperties(array(
            "sum"               => $out_sum,  
            "order_id"          => $shp_order,  
            "owner"             => $shp_uid,
            "paysys_invoice_id" => $inv_id,
        ));
        
        return true;
    }
    
    protected function getSuccessMessage(){
        return 'OK'.$this->getProperty('InvId');
    }    
}


Как видно, это всего 60 строчек кода. Но в результате не только будет проведена оплата с учетом кто платил, через что, сколько и т.п., но и будет автоматически изменен статус заказа на Оплачен. И вот прикрутить еще какой-нибудь способ оплаты — это всего несколько десятков строк.

Итоги


В итоге, получился на самом деле очень не плохой движок. Сразу скажу, что помимо гибкости, производительность у него тоже весьма не плохая. Как раз недавно наткнулся на топик, в котором народ рассуждал, что даже 40 000 товаров уже напрягает не хило их магазины. Я делал магазины на shopModx с десятками тысяч товаров без всяких особых ухищрений, и все нормально работает. И даже если товаров будут сотни тысяч (я уже делал один на 150 000 товаров), то с небольшими доработками магазин и столько потянет.

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

И напоследок видео с кратким обзором движка и двумя способами установки.
Читать дальше →

Лучшие платные Photoshop плагины для веб-дизайнеров

Reading time3 min
Views32K
Привет, Хабр! Относительно недавно я опубликовал "Лучшие бесплатные Photoshop плагины для веб-дизайнеров". В подборке я попытался собрать все известные мне инструменты, которые значительно помогают в работе. Кстати, по возможности я ее обновляю и несколько дней назад добавил Velositey для построения лэйаутов. Таким образом мне хочется сделать «конкретное местечко» где будут храниться удобные для работы с фотошопом штуки. Аналогично не только поста ради, мне хочется собрать и платные инструменты, которые реально окупятся через «несколько» человеко часов. Некоторыми из них я пользуюсь сам.

PNG HAT $39.99



Сей замечательный плагин от достаточно известной компании Source «символизирует» лучший способ того, как должна происходить нарезка слоев. Принцип «в один клик», которые значительно сокращает потраченное время на экспорт слоев наглядно продемонстрирован в видео выше. Что еще есть внутри: мощная оптимизация с помощью PNG Crush, PNG quant и opti PNG, которая по заявлению разработчиков в разы эффективнее стандартного способа; Base64 encoding; код на изображение копируется в буффер для HTML, CSS или Obj C; масштабирование, что очень удобно в связи с необходимостью разработки дизайна под Retina дисплеи; и даже облако объемом 1GB для хранения изображений.

Говоря про «нарезку» также стоит упомянуть Zeick $19.99, который экспортирует все векторные шейпы в SVG и Glifo $19, который экспортирует эти же шейпы в иконочные шрифты.

Читать дальше →

Устройство минималистичных посадочных страниц

Reading time7 min
Views45K


Предыдущий перевод (Landing page, которая работает), посвященный дизайну качественных посадочных страниц набрал больше 150 000 просмотров. С тех пор прошло уже много времени и подход к дизайну изменился – все больше становится минималистичных страниц, о которых и пойдет речь в статье.
Читать дальше →

Минимализм при создании landing page

Reading time8 min
Views43K
За последние несколько лет веб-дизайнеры постепенно пришли к тому, что «захламление» сайтов несущественными элементами — плохая идея. Такие элементы веб-дизайна, как бессмысленные изображения, запутанные навигационные системы, бесчисленные кнопки социального обмена и прочее уводят пользователей от основных целей веб-страницы.

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

Несколько примеров минимализма целевых страниц

Давайте рассмотрим минимализм landing page некоторых успешных веб-приложений:


Читать дальше →

Дайджест интересных материалов из мира веб-разработки и IT за последнюю неделю №103 (30 марта — 5 апреля 2014)

Reading time5 min
Views38K
Предлагаем вашему вниманию подборку с ссылками на полезные ресурсы, интересные материалы и IT-новости:


Читать дальше →

Карточные игры

Reading time7 min
Views163K


Раз предыдущая статья про банкомат вызвала определённый интерес — то продолжаем банковскую тему. «Пластиковая карта» — обывательское название банковской платежной карты (БПК). Вещь в хозяйстве крайне полезная — ведь её можно прекрасно использовать чтобы ровнять дорожку вырезать из неё отличный медиатор для электрогитары. Но — шутки в сторону — любопытная конкретика…
Читать дальше →

Применение преобразования Пуассона для бесшовного наложения изображений

Reading time2 min
Views37K
В задачах машинного зрения и автоматизированной обработки изображений зачастую встречается задача бесшовного наложения изображений. Для наглядности, сразу приведу пример.


Читать дальше →

Создаём шаблон 1С-Битрикс на базе Bootstrap вёрстки

Reading time29 min
Views158K

Введение


Уважаемый читатель, данная статья является по сути своей продолжением статьи «Как сверстать веб-страницу. Часть 2 — Bootstrap» и здесь мы отойдём от собственно вёрстки, занявшись интеграцией HTML шаблона в CMS 1С-Битрикс.

В предыдущей части Хабраюзер Mirantus сверстал шаблон Corporate Blue от студии Pcklaboratory с помощью Bootstrap 3.

Читать дальше →

Несколько интересностей и полезностей для веб-разработчика #11

Reading time3 min
Views36K
Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

Node App



Вы когда нибудь задумывались о возможности писать приложения для iOS и OSX на Node.js? А проект, позволяющий решить эту задачу уже есть. Более того часть (хоть и маленькая) функционала доступна уже сейчас. Пишу о проекте с мыслями о том, что хабраобщество значимая единица социального коддинга…

Scala.js


Существует достаточно много разработчиков, предпочитающих создавать веб на Scala, но JavaScript остается самым популярным языком программирования. Видимо, поэтому на свет появился Scala.js — компилятор Scala в JavaScript с очень проработанной функциональной совместимостью.

Hackathon Starter



Замечательный boilerplate для Node.js проектов. Базовая регистрация через email, авторизация по OAuth (Twitter, Facebook, GitHub, Google), красивые уведомления на animate.css, автокомпиляция LESS, Bootstrap 3 + Flat UI + iOS7 Theme, контактная форма и стандартный функционал управления аккаунтом.

Читать дальше →

CMS будущего

Reading time14 min
Views76K

Покончим с устаревшим подходом к контенту


На протяжении всей истории интернета мы работали с контентом двумя способами:
  1. Создавали «один шаблон на все случаи жизни»
  2. Создавали для каждого случая свой уникальный шаблон

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

image
Читать дальше →

Ежемесячные расходы дизайн-студии на электроные сервисы

Reading time2 min
Views46K
Поговорим о ежемесячных тратах на электронные сервисы, которые необходимы для работы небольшой студии с удалённой командой, занимающейся дизайном в интернете. Давайте посмотрим, какими платными сервисами мы пользуемся в Genue.



50$. Basecamp



image

Простая и удобная система управления проектами от команды 37signals. Это основной инструмент взаимодействия как внутри студии, так и с заказчиками. Все задачи заводятся в виде простых списков и легко меняются местами друг с другом простым перетаскиванием. Каждая задача выглядит как публикация с комментариями. Любой может указывать, кто из команды получит уведомление на email о его комментарии. Можно ограничивать видимость некоторых задач для клиента.
Читать дальше →

2 кита разработки целевой страницы (landing page)

Reading time3 min
Views32K
image

Разработка целевых страниц или landing page в России стремительно набирает обороты. Это вполне естественно, учитывая более высокие показатели конверсии целевых страниц, по сравнению с обычными страницами сайта.

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

Камера Эйнштейна: как один фотограф изображает время

Reading time20 min
Views169K
Адам Мадьяр — компьютерный гик, бросивший университет, фотограф-самоучка, Руб Голдберг высоких технологий, путешественник по миру и художник-концептуалист с растущим мировым признанием. Но никто не мог предположить, что он может быть еще и террористом, до того утра, пока он не спустился на станцию метро Юнион-Сквер в Нью-Йорке.

В то время Мадьяр был погружен в долговременный проект на стыке технологий и искусства под названием Stainless («Безупречные»), создавая изображения высокого разрешения из проезжающих поездов и пассажиров, используя сложное, написанное им самим программное обеспечение и доработанную промышленную фотокамеру. Техника сканирования, которую он разработал — объединение тысяч кадров шириной в пиксель в одно изображение — позволяет ему заставать пассажиров врасплох, пока они с шумом и лязгом летят сквозь темные тоннели метро, фиксируя их в призрачных изображениях, наполненных деталями, которые не может запечатлеть ни одна обычная камера.

image
Читать дальше →

Landing page, которая работает

Reading time6 min
Views583K


Знания о том, как сделать хорошую landing page помогут увеличить количество желаемых действий, совершаемых пользователями на Вашем сайте. В статье приводится обзор элементов дизайна хорошей landing page.
Читать дальше →

Не заставляйте меня думать!

Reading time3 min
Views17K
В этом посте хотелось бы снова поднять тему, которая в тех или иных вариантах уже проскальзывала везде, где только можно. Тема — упрощайте, только простые вещи понятны пользователю, только простые интерфейсы могут дать вам хорошую конвертацию и только простые сервисы имеют право на жизнь.

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

Но все это было бы пустым звуком, без конкретных примеров, без практики где мы набили несколько хороших шишек.
Теперь о тех самых шишках ...

Геймификация в деле

Reading time9 min
Views45K
image
О чем все это

В последнее время о геймификации говорят много. Рассказывают о сути технологии и истории возникновения, описывают механики, приводят в пример Foursquare, собирают статистику и проводят опросы. Теории в сети достаточно, а вот качественных примеров применения геймификации в бизнесе мало. Данная статья ставит перед собой цель показать на примере LiveTex, каким образом можно органично вписать инструментарий геймификации в бизнес-процессы компании.
Читать дальше →

WPCC 3.5 — плагин для создания калькуляторов в WordPress

Reading time13 min
Views79K
WPCC — это плагин, который позволяет администраторам сайта создавать форму калькуляторов и настраивать формулы расчетов.

В версия калькулятора «Creator Calculator 3.5» для CMS Wordpress внесены следующие изменения и возможности:
  • Изменен алгоритм расчетов
  • Изменена структуру таблицы калькулятора
  • Добавлена возможность округления результата расчетов
  • Появилась возможность применять арифметические функции: Извлечь квадратный корень, Возвести в степень
  • Поле jQurey Copy теперь работает для всех типов полей
  • Исправлен шаблон построения списков SELECT, RADIO (раньше: [100]:title; сейчас: 100:title)
  • Добавлена возможность создавать списки для Checkbox
  • Исправлены логические ошибки в функции расчета
  • Добавлено новое поле: Условия
  • Автоматический старт сессии и подключение плагина jQuery
  • Удалены лишние настройки калькулятора
  • Добавлена опция полей: Исключить из формулы
  • Добавлена опция полей: Скрыть поле визуально (для работы условий)
  • Добавлено новое поле: Слайдер (jQuery UI Slider)
  • Исправлена ошибка подключения wp-load.php к файлам плагина
  • Добавлен Импорт и Экспорт формул калькулятора
  • Добавлена возможность отправлять результаты расчетов пользователя на почту с сохранением выбранных параметров
  • Добавлены новые темы калькулятора
  • Исправлена работа сортировки полей
  • Добавлена возможность подключения скриптов, нужных для работы плагина на определенных страницах сайта

Узнать больше

Основы проектирования веб-интерфейсов в Axure RP Pro

Reading time8 min
Views124K
Axure RP ProВ последнее время разработчики веб-проектов все чаще начинают задумываться о том, что до начала разработки продукта было бы неплохо узнать, что это будет за продукт и как он будет выглядеть.

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

Средств для визуального проектирования становится все больше. Одни пользуются Adobe InDesign, другим нравится Visio, третьи довольствуются OpenOffice Draw. Но все больше поклонников появляется у довольно тяжелой и функциональной программы Axure RP Pro.

О том, как с ее помощью облегчить себе жизнь, и пойдет речь в этой статье. Осторожно, трафик!

Information

Rating
Does not participate
Location
Россия
Registered
Activity