28 янв. 2011 г.

Context menu for extjs grid

Well, depending on what you want to do you can handle the following GridPanel events in the same manner as your example: contextmenu, cellcontextmenu, containercontextmenu, groupcontextmenu, headercontextmenu, rowbodycontextmenu or rowcontextmenu.


First define your context menu

mnuContext = new Ext.menu.Menu({
    items: [{
        id: 'do-something',
        text: 'Do something'
    }],
    listeners: {
        itemclick: function(item) {
            switch (item.id) {
                case 'do-something':
                    break;
            }
        }
    }
});

Then create a listener for the desired event. It is very important to remember to stop the event's default behaviour so you can replace it with your own. If you don't call the event.stopEvent() method to stop the event bubbling onwards then the brower's default context menu will appear regardless of what you do.

rowcontextmenu: function(grid, index, event){
     event.stopEvent();
     mnuContext.showAt(event.xy);
}

from
http://stackoverflow.com/questions/3280101/how-i-can-create-context-menu-for-extjs-grid

ExtJS - Custom Column Renderer on TreeGrid

There is no API for TreeGrid because it's a user extension (Ext.ux). You'll have to take a look at the source code for more information. If you don't have the source in your project, go to the following page:

http://dev.sencha.com/deploy/dev/examples/treegrid/treegrid.html

and hit "View Source" Ctrl + U. From there you can link to TreeGrid.js and the other supporting js files.

I noticed that TreeGrid extends TreePanel, which in turn extends plain old Panel. There doesn't appear to be any reference to GridPanel, so I don't believe there is any column renderer as you'd expect if you were using that component. From what I gather, the example (tree-grid.js) instead uses an XTemplate for rendering column data:

Extjs: Предполагается наличие идентификатора, строки или числа

В этом разделе я буду писать заметки из своей практики кодирования на extjs

Сегодня обнаружил что такой код
        var paramsGetFields = {
                'tid': '111',
                'subject': '222',
                'xaction': '333',
            };

вызывет ошибку в IE, страница просто не открывается, вылетая с  ошибкой
Сведения об ошибке на веб-странице

Сообщение: Предполагается наличие идентификатора, строки или числа
Строка: 488
Символ: 13
Код: 0
URI-код: http://site.ru/js/Ext.ux.sript.js

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

        var paramsGetFields = {
                'tid': '111',
                'subject': '222',
                'xaction': '333' //здесь не должно быть запятой
            };

Такая мелочь а сайт не открывается из за нее

Чему поучиться у ExtJS

Вступление

Вчера меня снова потянуло на ExtJS. Видимо, жарища так влияет. Поковырявшись в интернете, я нашел черновую версию книги ExtJS in Action, загрузил ее в свой Sony Reader и стал читать. После прочтения трех первых глав пришло осознание того, насколько красиво там сделаны некоторые базовые вещи. В этой статейке я остановлюсь на двух моментах.

Используем SELECT для вставки строк

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

INSERT INTO businesses_categories (id_business, id_category)
SELECT id, id_category FROM business ORDER BY id

Сохранение настроек грида

Разбираясь с фильтрами для грида, случайно наткнулся на способ сохранять состояние грида - позиции колонок, размер и визибилити (не смог нормальный русский аналог вспомнить О_О).
Всего одна строчка
Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
и все работает.
Как говорится - никогда не знаешь, где найдешь, где потеряешь.

Подсчет уникальных значений в столбце

SELECT 
nbsp;   count( DISTINCT table_field )FROM 
    TABLE

Abstract classes with Ext JS

27 янв. 2011 г.

Сборник советов и фактов по оптимизации PHP-скриптов

По следам статьи «Сборник советов и фактов по оптимизации PHP-скриптов»


Вчера, прочитав пост "Сборник советов и фактов по оптимизации PHP-скриптов", побывал в недоумении от некоторых пунктов статьи. Очень часто по работе приходится сталкиваться с крупными проектами. Последние 5 лет я работал с высокими нагрузками и получил, как мне кажется, хороший опыт их разработки и поддержки. Не хочу начинать холивары и в деталях расписывать все тонкости оптимизации проектов. Я лишь хочу высказать свою точку зрения на некоторые озвученные в статье пункты и, если Хабрапользователь меня поддержит, с огромным удовольствием эта статья будет началом цикла статей по оптимизации.

Книги по EXTJS

https://www.packtpub.com/ext-js-3-0-cookbook/book








https://www.packtpub.com/learning-ext-js-3-2-for-building-dynamic-desktop-style-user-interfaces/book



Extjs in action
http://www.manning.com/garcia/

Автором книги "ExtJS in Action" является давний участник форумов ExtJS Jesus D. Garsia, Jr. Автор имеет большой опыт оказания квалифицированной помощи в разработке на ExtJS. Книга ориентирована на преподавание ExtJS.



Learning Ext JS
https://www.packtpub.com/learning-ext-js/book

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


Понимание javascript
https://www.packtpub.com/object-oriented-javascript-applications-libraries/book








26 янв. 2011 г.

Сравни и перезапиши. Синхронизация файлов по FTP


Синхронизировать данные по протоколу FTP можно и с помощью Total Commander. Но человеку, дорожащему своим временем и нервами, все же стоит присмотреться к программам-синхронизаторам.

Примеры на Extjs

40 советов по оптимизации вашего PHP-кода

Перевод заметки "40 Tips for optimizing your php code". Автор - Reinhold Weber.

Сборник советов и фактов по оптимизации PHP-скриптов

Одним из основных критериев успешности любого интернет-ресурса является скорость его работы и с каждым годом пользователи становятся всё более и более требовательными по этому критерию. Оптимизация работы php-скиптов — это один из методов обеспечения скорости работы системы.

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

25 янв. 2011 г.

Обфускация JavaScript


В статье собраны всем известные методы и предельно извращенные. Эту статью я решил написать после недавнего прочтения поста в блоге Badass JavaScript и решил её дополнить своими находками.

Библиотека CURL в PHP

Curl

PHP поддерживает libcurl, библиотеку, созданную Daniel"ом Stenberg"ом,
которая даёт возможность соединяться с серверами различных типов и по разным протоколам.


libcurl в настоящее время поддерживает протоколы http, https, ftp, gopher, telnet, dict, file и ldap.


libcurl также поддерживает сертификаты HTTPS, HTTP POST, HTTP PUT, загрузку по FTP (это можно сделать также РНР-расширением ftp),
загрузку на основе форм HTTP, прокси, куки и аутентификацию user+password.
Эти функции были введены в PHP 4.0.2.



Авторизация в Яндексе – php, curl и cookies

В прошлом посте мы делали POST запросы, а сегодня мы будем авторизироваться в Яндексе. Помимо отправки POST формы с логином и паролем, нам необходимо будет также авторизироваться, тоесть сохранить нужные куки и отдавать их в последующих запросах.
Поставим себе следующую задачу – получать содержимое панели вебмастера с помощью PHP.
Все знают, как при помощи PHP получить содержание той или иной страницы. Но в нашей задаче есть одна загвоздка – чтобы получить страницу с сайтами определенного аккаунта, нам нужно войти под этим аккаунтом. Для этого необходимо отправить POST форму отсюда. Внимательно изучаем все поля этой формы, нам необходимо отправить Яндексу все эти поля. В ответ Яндекс даст нам куку, которую мы должны сохранить и отдавать обратно Яндексу при каждом следующем посещении страницы с инфой, доступной только авторизированным пользователям.

Создание и применение патча в Drupal

Эта ссылка на видео, где можно посмотреть как создаются и применяются патчи для в Друпале. После просмотра скринкаста, вы сможете создавать полноценные исправления для Друпала и модулей, постить их на drupal.org, таким образом, полноценно принимая участие в разработке системы. Кроме того, вы теперь будете знать, как использовать патчи взятые на том же drupal.org'е для своих нужд.

24 янв. 2011 г.

Удаление одним запросом записи в нескольких таблицах (MySQL)

Для того чтобы вывести эту информацию единой в едином виде придется произвести объединение выдачи:


SELECT
tablesql.active, tablesql.id, tablesql_text.text_table
FROM
tablesql
INNER JOIN tablesql_text ON tablesql.id = tablesql_text.table_id