<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Bethrezen - Лента сообщений</title>
<link>http://bethrezen.bestpersons.ru/feed/</link>
<description></description>
<language>ru</language>
<managingEditor>info@bestpersons.ru</managingEditor>
<generator>www.bestpersons.ru</generator>
<item>
<title><![CDATA[Ресайз PNG картинок c прозрачностью в Thunar]]></title>
<guid isPermaLink="true">http://bethrezen.bestpersons.ru/feed/post16524922/</guid>
<link>http://bethrezen.bestpersons.ru/feed/post16524922/</link>
<description><![CDATA[. Сегодня мне пришлось решить рутиную задачу &#8211; изменить размер PNG картинок не теряя при этом прозрачность. Искать какой либо софт было лень, поэтому решил написать bash скрипт, который всё сделает за меня.Идея позаимствована с Crunchbang linux wiki.
Создаём папку ~/bin и там файлик resize.sh следующего содержимого:#! /bin/sh
for file; do
if &#91; ! -e $file &#93;; [...]]]></description>
<pubDate>Sat, 09 Jan 2010 21:11:50 GMT</pubDate>
<author>bethrezen</author>
</item>
<item>
<title><![CDATA[Вышел WordPress 2.9]]></title>
<guid isPermaLink="true">http://bethrezen.bestpersons.ru/feed/post15570242/</guid>
<link>http://bethrezen.bestpersons.ru/feed/post15570242/</link>
<description><![CDATA[. Сегодня официально вышел WordPress 2.9. Скачать его можно на официальном сайте.
Из нового:Глобальная функция отмены/корзины. Если Вы удалите пост или комментарий &#8211; вы можете вернуть его из корзины. Таким образом, нет раздражающих сообщений &#171;Вы уверены?&#187; перед удалением поста.
Встроенный редактор изображений позволяет обрезать, редактировать, поворачивать, отражать и изменять размер. Это первый шаг грядущих улучшений в обработке [...]]]></description>
<pubDate>Sat, 19 Dec 2009 15:09:28 GMT</pubDate>
<author>bethrezen</author>
</item>
<item>
<title><![CDATA[Перенос MySQL в другую папку/раздел на Debian/Ubuntu]]></title>
<guid isPermaLink="true">http://bethrezen.bestpersons.ru/feed/post15562770/</guid>
<link>http://bethrezen.bestpersons.ru/feed/post15562770/</link>
<description><![CDATA[Недавно мне пришлось переместить данные MySQL в другую папку(а точнее на другой раздел) на Debian Linux 5.0.3.
Логично, что простым переносом файлов тут не отделаешься, надо что-то где-то прописать.
По-умолчанию данные MySQL лежат в /var/lib/mysql. Мне захотелось, чтобы они были в /home/mysql. Переносим папку mysql куда нам нужно, затем лезем в конфиг MySQL (/etc/mysql/my.cnf).
Там есть опция:datadir         = [...]]]></description>
<pubDate>Sat, 19 Dec 2009 08:51:38 GMT</pubDate>
<author>bethrezen</author>
</item>
<item>
<title><![CDATA[Доступны репозитории Ubuntu Lucid Lynx]]></title>
<guid isPermaLink="true">http://bethrezen.bestpersons.ru/feed/post15443457/</guid>
<link>http://bethrezen.bestpersons.ru/feed/post15443457/</link>
<description><![CDATA[С недавнего времени доступны репозитории разрабатываемой версии Ubuntu Lucid Lynx.
Для обновления до Ubuntu 10.04 LTS введите в консоли следующую команду:sudo do-release-upgrade -d -pUbuntu 10.04 (Lucid Lynx) является LTS релизом и выйдет в апреле 2010 года. Будет поддерживаться особенно долго и тщательно.Похожие записи:Перенос MySQL в другую папку/раздел на Debian/Ubuntu]]></description>
<pubDate>Wed, 16 Dec 2009 12:45:53 GMT</pubDate>
<author>bethrezen</author>
</item>
<item>
<title><![CDATA[Разработчики Sabayon Linux планируют выпустить версию 5.0 через 2 недели]]></title>
<guid isPermaLink="true">http://bethrezen.bestpersons.ru/feed/post8882020/</guid>
<link>http://bethrezen.bestpersons.ru/feed/post8882020/</link>
<description><![CDATA[Wolfden в своём блоге написал о начале тестирования второй беты Sabayon 5.0.
Он надеется выпустить финальную версию Sabayon 5.0 через две недели, однако точной даты никто не знает.
Вторая бета основывается на ядре linux 2.6.31. Разработчики дистрибутива столкнулись с  проблемой обновления до libxcb 1.4, в результате чего пришлось перекомпилировать много пакетов. Радует одно &#8211; в репозитарии пятой [...]]]></description>
<pubDate>Sun, 20 Sep 2009 12:51:28 GMT</pubDate>
<author>bethrezen</author>
</item>
<item>
<title><![CDATA[Создаём расширяемую структуру на Yii Framework]]></title>
<guid isPermaLink="true">http://bethrezen.bestpersons.ru/feed/post8731462/</guid>
<link>http://bethrezen.bestpersons.ru/feed/post8731462/</link>
<description><![CDATA[Хочу предложить Вашему вниманию концепт расширяемой структуры приложения на Yii Framework. Я уже писал как сделать свои Actions на Yii.
Сегодня же речь пойдёт о написании стандартных экшенов для контроллеров и их расширения.
Предположим, в приложении у нас все контроллеры наследуются от класса dotPlantFrontMainController.
Нам необходимо, чтобы у всех контроллеров было действие Breadcrumb.
Для этого, в базовом контроллере dotPlantFrontMainController [...]]]></description>
<pubDate>Wed, 16 Sep 2009 15:36:38 GMT</pubDate>
<author>bethrezen</author>
</item>
<item>
<title><![CDATA[Защищено: Реляционные модели в Yii Framework “на пальцах”]]></title>
<guid isPermaLink="true">http://bethrezen.bestpersons.ru/feed/post8644719/</guid>
<link>http://bethrezen.bestpersons.ru/feed/post8644719/</link>
<description><![CDATA[Цитаты нет, т.к. эта запись защищена.]]></description>
<pubDate>Mon, 14 Sep 2009 08:59:23 GMT</pubDate>
<author>bethrezen</author>
</item>
<item>
<title><![CDATA[The new look]]></title>
<guid isPermaLink="true">http://bethrezen.bestpersons.ru/feed/post8264936/</guid>
<link>http://bethrezen.bestpersons.ru/feed/post8264936/</link>
<description><![CDATA[Вот мой блог и переехал с Blogger на Wordpress.
Дизайн пока временный. Скоро переделаю. Надеюсь, это не затянется]]></description>
<pubDate>Wed, 02 Sep 2009 13:37:47 GMT</pubDate>
<author>bethrezen</author>
</item>
<item>
<title><![CDATA[Почему disabled input элементы формы не передаются?]]></title>
<guid isPermaLink="true">http://bethrezen.bestpersons.ru/feed/post8264935/</guid>
<link>http://bethrezen.bestpersons.ru/feed/post8264935/</link>
<description><![CDATA[Сегодня столкнулся с одной особенностью INPUT элементов с атрибутом disabled. Как оказалось &#8211; они не передаются серверу при сабмите формы.
Вышел из положения вот таким изящным способом на jQuery:$&#40;function&#40;&#41;&#123;
$&#40;&#34;form&#34;&#41;.submit&#40;function&#40;&#41;&#123;
$&#40;&#34;input&#34;&#41;.attr&#40;&#34;disabled&#34;, &#34;&#34;&#41;; $&#40;&#34;select&#34;&#41;.attr&#40;&#34;disabled&#34;, &#34;&#34;&#41;;
&#125;&#41;;
&#125;&#41;;Таким образом, при действии submit у всех input и select элементов убирается атрибут disabled. Один минус &#8211; не работает при отключенных [...]]]></description>
<pubDate>Tue, 30 Jun 2009 09:42:00 GMT</pubDate>
<author>bethrezen</author>
</item>
<item>
<title><![CDATA[jQuery Serialize - PHP like serialize function for JavaScript]]></title>
<guid isPermaLink="true">http://bethrezen.bestpersons.ru/feed/post5947705/</guid>
<link>http://bethrezen.bestpersons.ru/feed/post5947705/</link>
<description><![CDATA[ENG: I’ve addapted a JavaScript serialize function by Kevin van Zonneveld to jQuery. Function...]]></description>
<pubDate>Thu, 25 Jun 2009 09:12:26 GMT</pubDate>
<author>bethrezen</author>
</item>
<item>
<title><![CDATA[jQuery Serialize – PHP like serialize function for jQuery]]></title>
<guid isPermaLink="true">http://bethrezen.bestpersons.ru/feed/post8264934/</guid>
<link>http://bethrezen.bestpersons.ru/feed/post8264934/</link>
<description><![CDATA[ENG: I&#8217;ve addapted a JavaScript serialize function by Kevin van Zonneveld to jQuery. Function works like the same named function in PHP. Be free to use it in your projects. It is especially needed when you want to post Object in AJAX (in jQuery &#171;$.ajax()&#187;).
RUS: Я адаптировал JavaScript serialize функцию, написанную Kevin van Zonneveld, для [...]]]></description>
<pubDate>Thu, 25 Jun 2009 09:04:00 GMT</pubDate>
<author>bethrezen</author>
</item>
<item>
<title><![CDATA[jQuery Serialize - PHP like serialize function for JavaScript]]></title>
<guid isPermaLink="true">http://bethrezen.bestpersons.ru/feed/post13492423/</guid>
<link>http://bethrezen.bestpersons.ru/feed/post13492423/</link>
<description><![CDATA[<span style="font-weight: bold;">ENG</span>: I've addapted a <span style="font-weight: bold;">JavaScript serialize function</span> by <a rel="nofollow" href="http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_serialize/">Kevin van Zonneveld</a> to <span style="font-weight: bold;">jQuery</span>. Function works like the same named function in PHP. Be free to use it in your projects. It is especially needed when you want to post Object in AJAX (in jQuery "$.ajax()").<br><span style="font-weight: bold;">RUS</span>: Я адаптировал JavaScript serialize функцию, написанную Kevin van Zonneveld, для использования с jQuery. Serialize работает также как и одноименная функция в PHP. Она хорошо выручит Вас, если Вы захотите передать в AJAX запросе Объект (JavaScript object).<br><br>Example of using: $.serialize({data: 'value'});<br><br>Source code:<br><code><br>jQuery.extend({<br>serialize: function( mixed_value ) {<br>// http://kevin.vanzonneveld.net<br>// + original by: Arpad Ray (mailto:arpad@php.net)<br>// + improved by: Dino<br>// + bugfixed by: Andrej Pavlovic<br>// + bugfixed by: Garagoth<br>// + input by: DtTvB (http://dt.in.th/2008-09-16.string-length-in-bytes.html)<br>// + bugfixed by: Russell Walker<br>// % note: We feel the main purpose of this function should be to ease the transport of data between php &amp; js<br>// % note: Aiming for PHP-compatibility, we have to translate objects to arrays<br>// * example 1: serialize(['Kevin', 'van', 'Zonneveld']);<br>// * returns 1: 'a:3:{i:0;s:5:"Kevin";i:1;s:3:"van";i:2;s:9:"Zonneveld";}'<br>// * example 2: serialize({firstName: 'Kevin', midName: 'van', surName: 'Zonneveld'});<br>// * returns 2: 'a:3:{s:9:"firstName";s:5:"Kevin";s:7:"midName";s:3:"van";s:7:"surName";s:9:"Zonneveld";}'<br><br>var _getType = function( inp ) {<br>var type = typeof inp, match;<br>var key;<br>if (type == 'object' &amp;&amp; !inp) {<br>return 'null';<br>}<br>if (type == "object") {<br>if (!inp.constructor) {<br>return 'object';<br>}<br>var cons = inp.constructor.toString();<br>match = cons.match(/(\w+)\(/);<br>if (match) {<br>cons = match[1].toLowerCase();<br>}<br>var types = ["boolean", "number", "string", "array"];<br>for (key in types) {<br>if (cons == types[key]) {<br>type = types[key];<br>break;<br>}<br>}<br>}<br>return type;<br>};<br>var type = _getType(mixed_value);<br>var val, ktype = '';<br><br>switch (type) {<br>case "function":<br>val = "";<br>break;<br>case "undefined":<br>val = "N";<br>break;<br>case "boolean":<br>val = "b:" + (mixed_value ? "1" : "0");<br>break;<br>case "number":<br>val = (Math.round(mixed_value) == mixed_value ? "i" : "d") + ":" + mixed_value;<br>break;<br>case "string":<br>val = "s:" + encodeURIComponent(mixed_value).replace(/%../g, 'x').length + ":\"" + mixed_value + "\"";<br>break;<br>case "array":<br>case "object":<br>val = "a";<br>/*<br>if (type == "object") {<br>var objname = mixed_value.constructor.toString().match(/(\w+)\(\)/);<br>if (objname == undefined) {<br>return;<br>}<br>objname[1] = serialize(objname[1]);<br>val = "O" + objname[1].substring(1, objname[1].length - 1);<br>}<br>*/<br>var count = 0;<br>var vals = "";<br>var okey;<br>var key;<br>for (key in mixed_value) {<br>ktype = _getType(mixed_value[key]);<br>if (ktype == "function") {<br>continue;<br>}<br><br>okey = (key.match(/^[0-9]+$/) ? parseInt(key, 10) : key);<br>vals += $.serialize(okey) +<br>$.serialize(mixed_value[key]);<br>count++;<br>}<br>val += ":" + count + ":{" + vals + "}";<br>break;<br>}<br>if (type != "object" &amp;&amp; type != "array") {<br>val += ";";<br>}<br>return val;<br>}<br>});<br></code><br><br>NJoy<br><br><a target="_blank" title="bethrezen в интернете" href="http://bethrezen.bestpersons.ru/invite11010"><img border="0" src="http://in1.bestpersons.ru/service/infoimimg/bethrezen" alt=""></a>]]></description>
<pubDate>Thu, 25 Jun 2009 03:06:47 GMT</pubDate>
<author>bethrezen</author>
</item>
<item>
<title><![CDATA[jQuery Serialize - PHP like serialize function for JavaScript]]></title>
<guid isPermaLink="true">http://bethrezen.bestpersons.ru/feed/post19657512/</guid>
<link>http://bethrezen.bestpersons.ru/feed/post19657512/</link>
<description><![CDATA[<span style="font-weight: bold;">ENG</span>: I've addapted a <span style="font-weight: bold;">JavaScript serialize function</span> by <a rel="nofollow" href="http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_serialize/">Kevin van Zonneveld</a> to <span style="font-weight: bold;">jQuery</span>. Function works like the same named function in PHP. Be free to use it in your projects. It is especially needed when you want to post Object in AJAX (in jQuery "$.ajax()").<br><span style="font-weight: bold;">RUS</span>: Я адаптировал JavaScript serialize функцию, написанную Kevin van Zonneveld, для использования с jQuery. Serialize работает также как и одноименная функция в PHP. Она хорошо выручит Вас, если Вы захотите передать в AJAX запросе Объект (JavaScript object).<br><br>Example of using: $.serialize({data: 'value'});<br><br>Source code:<br><code><br>jQuery.extend({<br>serialize: function( mixed_value ) {<br>// http://kevin.vanzonneveld.net<br>// + original by: Arpad Ray (mailto:arpad@php.net)<br>// + improved by: Dino<br>// + bugfixed by: Andrej Pavlovic<br>// + bugfixed by: Garagoth<br>// + input by: DtTvB (http://dt.in.th/2008-09-16.string-length-in-bytes.html)<br>// + bugfixed by: Russell Walker<br>// % note: We feel the main purpose of this function should be to ease the transport of data between php &amp; js<br>// % note: Aiming for PHP-compatibility, we have to translate objects to arrays<br>// * example 1: serialize(['Kevin', 'van', 'Zonneveld']);<br>// * returns 1: 'a:3:{i:0;s:5:"Kevin";i:1;s:3:"van";i:2;s:9:"Zonneveld";}'<br>// * example 2: serialize({firstName: 'Kevin', midName: 'van', surName: 'Zonneveld'});<br>// * returns 2: 'a:3:{s:9:"firstName";s:5:"Kevin";s:7:"midName";s:3:"van";s:7:"surName";s:9:"Zonneveld";}'<br><br>var _getType = function( inp ) {<br>var type = typeof inp, match;<br>var key;<br>if (type == 'object' &amp;&amp; !inp) {<br>return 'null';<br>}<br>if (type == "object") {<br>if (!inp.constructor) {<br>return 'object';<br>}<br>var cons = inp.constructor.toString();<br>match = cons.match(/(\w+)\(/);<br>if (match) {<br>cons = match[1].toLowerCase();<br>}<br>var types = ["boolean", "number", "string", "array"];<br>for (key in types) {<br>if (cons == types[key]) {<br>type = types[key];<br>break;<br>}<br>}<br>}<br>return type;<br>};<br>var type = _getType(mixed_value);<br>var val, ktype = '';<br><br>switch (type) {<br>case "function":<br>val = "";<br>break;<br>case "undefined":<br>val = "N";<br>break;<br>case "boolean":<br>val = "b:" + (mixed_value ? "1" : "0");<br>break;<br>case "number":<br>val = (Math.round(mixed_value) == mixed_value ? "i" : "d") + ":" + mixed_value;<br>break;<br>case "string":<br>val = "s:" + encodeURIComponent(mixed_value).replace(/%../g, 'x').length + ":\"" + mixed_value + "\"";<br>break;<br>case "array":<br>case "object":<br>val = "a";<br>/*<br>if (type == "object") {<br>var objname = mixed_value.constructor.toString().match(/(\w+)\(\)/);<br>if (objname == undefined) {<br>return;<br>}<br>objname[1] = serialize(objname[1]);<br>val = "O" + objname[1].substring(1, objname[1].length - 1);<br>}<br>*/<br>var count = 0;<br>var vals = "";<br>var okey;<br>var key;<br>for (key in mixed_value) {<br>ktype = _getType(mixed_value[key]);<br>if (ktype == "function") {<br>continue;<br>}<br><br>okey = (key.match(/^[0-9]+$/) ? parseInt(key, 10) : key);<br>vals += $.serialize(okey) +<br>$.serialize(mixed_value[key]);<br>count++;<br>}<br>val += ":" + count + ":{" + vals + "}";<br>break;<br>}<br>if (type != "object" &amp;&amp; type != "array") {<br>val += ";";<br>}<br>return val;<br>}<br>});<br></code><br><br>NJoy<br><br><a target="_blank" title="bethrezen в интернете" href="http://bethrezen.bestpersons.ru/invite11010"><img border="0" src="http://in1.bestpersons.ru/service/infoimimg/bethrezen" alt=""></a>]]></description>
<pubDate>Wed, 24 Jun 2009 19:06:47 GMT</pubDate>
<author>bethrezen</author>
</item>
<item>
<title><![CDATA[Яндекс.Метрика – Демография – DailySnap]]></title>
<guid isPermaLink="true">http://bethrezen.bestpersons.ru/feed/post8264933/</guid>
<link>http://bethrezen.bestpersons.ru/feed/post8264933/</link>
<description><![CDATA[Установил себе на сайт бета версию счетчика Яндекс.Метрика. Сегодня покопавшись, нашёл интересную страничку.Кликабельно
Интересно, Как Яндекс определяет пол и возраст посетителей?]]></description>
<pubDate>Wed, 24 Jun 2009 15:56:00 GMT</pubDate>
<author>bethrezen</author>
</item>
<item>
<title><![CDATA[Яндекс.Метрика - Демография - DailySnap]]></title>
<guid isPermaLink="true">http://bethrezen.bestpersons.ru/feed/post5926148/</guid>
<link>http://bethrezen.bestpersons.ru/feed/post5926148/</link>
<description><![CDATA[Установил себе на сайт бета версию счетчика Яндекс.Метрика. Сегодня покопавшись, нашёл интересную...]]></description>
<pubDate>Wed, 24 Jun 2009 15:51:34 GMT</pubDate>
<author>bethrezen</author>
</item>
<item>
<title><![CDATA[Яндекс.Метрика - Демография]]></title>
<guid isPermaLink="true">http://bethrezen.bestpersons.ru/feed/post5926471/</guid>
<link>http://bethrezen.bestpersons.ru/feed/post5926471/</link>
<description><![CDATA[<p><a href="http://fotki.yandex.ru/users/b37hr3z3n/view/170248/"><img src="http://img-fotki.yandex.ru/get/3600/b37hr3z3n.3/0_29908_3ab00cd5_M" alt="Яндекс.Метрика - Демография" width="300" height="240"/></a><br/></p>]]></description>
<pubDate>Wed, 24 Jun 2009 15:46:00 GMT</pubDate>
<author>bethrezen</author>
</item>
<item>
<title><![CDATA[]]></title>
<guid isPermaLink="true">http://bethrezen.bestpersons.ru/feed/post5243023/</guid>
<link>http://bethrezen.bestpersons.ru/feed/post5243023/</link>
<description><![CDATA[привет из ljchat.ru<br /><a style="color:#0033ff;" href="http://ljchat.ru/bethrezen_ru/message/2083266">Это пост из LJChat</a>]]></description>
<pubDate>Mon, 01 Jun 2009 21:15:19 GMT</pubDate>
<author>bethrezen</author>
</item>
<item>
<title><![CDATA[Yii - создание своих типов Action-ов]]></title>
<guid isPermaLink="true">http://bethrezen.bestpersons.ru/feed/post5153929/</guid>
<link>http://bethrezen.bestpersons.ru/feed/post5153929/</link>
<description><![CDATA[Пишу одно прлиожение на <strong>Yii Framework</strong>. Структура приложения такова, что необходимо разграничить экшены контроллеров(<strong>CController</strong>) по папкам и сделать их типовыми. <br />Экшены разграничиваются легко.<br />Предположим, что у нас есть ряд экшенов для администрирования. Всем им надо установить какие-либо свойства или же сделать при их вызове какие-то типовые действия. <br />Рассмотрим на примере изменения титла страницы.<br />Вот код моего базового экшена:<br /><blockquote><pre><smallfont>code:</smallfont><hr /><br /><span style="font-family: courier new,courier;">class dotPlantAdminAction extends CAction<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp; /**<br />&nbsp;&nbsp;&nbsp; &nbsp; * Constructor.<br />&nbsp;&nbsp;&nbsp; &nbsp; * Runs CAction constructor and makes some changes for Admin action type<br />&nbsp;&nbsp;&nbsp; &nbsp; */<br />&nbsp;&nbsp;&nbsp;&nbsp; public function&nbsp; __construct($controller,$id)<br />&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp; &nbsp;parent::__construct($controller,$id);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;controller-&gt;pageTitle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = dotPlant::getName() . " - Admin ";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp; public function run()<br />&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; }<br />}</span><br /><hr /></pre><normalfont></normalfont></blockquote><br /><br />В конструкторе мы сначала вызываем <span style="font-family: courier new,courier;">parent::__construct</span> с необходимыми параметрами. Это грубо-говоря идёт инициализация базового <strong>CAction</strong>.<br /><br />Допустим у нас есть контроллер SettingsController. И нам нужно сделать его на основе нашего экшена. Создаем папку&nbsp; <strong>protected/controllers/Settings/</strong>. В ней создаем файл <strong>ActionAdmin.php</strong> с таким вот кодом:<br /><blockquote><pre><smallfont>code:</smallfont><hr /><br /><br /><pre><span style="font-family: courier new,courier;">class ActionAdmin extends dotPlantAdminAction</span></pre><br /><pre><span style="font-family: courier new,courier;">{</span></pre><br /><pre><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp; public function run()</span></pre><br /><pre><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp; {</span></pre><br /><pre><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp; $this-&gt;controller-&gt;render('admin');&nbsp;&nbsp;&nbsp; </span></pre><br /><pre><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp; }</span></pre><br /><pre><span style="font-family: courier new,courier;">}</span></pre><br /><hr /></pre><normalfont></normalfont></blockquote><br /><br />Видите? Нам достаточно только объявить run() и уже всё готово. При загрузке запустится необходимый нам конструктор базового контроллера с нашими действиями.<br /><br />Вот по такому принципу я разграничиваю например админку в своей CMS <a title="dotPlant CMS based on Yii Framework" href="http://code.google.com/p/dotplant/">dotPlant</a> на Yii Framework. Слава PHP пятому!<br /><br /><a href="http://bethrezen.bestpersons.ru/invite11010" target="_blank"><img src="http://in1.bestpersons.ru/service/infoimimg/bethrezen" /></a>]]></description>
<pubDate>Fri, 29 May 2009 12:50:22 GMT</pubDate>
<author>bethrezen</author>
</item>
<item>
<title><![CDATA[Yii – создание своих типов Action-ов]]></title>
<guid isPermaLink="true">http://bethrezen.bestpersons.ru/feed/post8264932/</guid>
<link>http://bethrezen.bestpersons.ru/feed/post8264932/</link>
<description><![CDATA[Пишу одно прлиожение на Yii Framework. Структура приложения такова, что необходимо разграничить экшены контроллеров(CController) по папкам и сделать их типовыми.
Экшены разграничиваются легко.
Предположим, что у нас есть ряд экшенов для администрирования. Всем им надо установить какие-либо свойства или же сделать при их вызове какие-то типовые действия.
Рассмотрим на примере изменения титла страницы.
Вот код моего базового экшена:class dotPlantAdminAction [...]]]></description>
<pubDate>Fri, 29 May 2009 12:49:00 GMT</pubDate>
<author>bethrezen</author>
</item>
<item>
<title><![CDATA[Yii - создание своих типов Action-ов]]></title>
<guid isPermaLink="true">http://bethrezen.bestpersons.ru/feed/post13492422/</guid>
<link>http://bethrezen.bestpersons.ru/feed/post13492422/</link>
<description><![CDATA[Пишу одно прлиожение на <strong>Yii Framework</strong>. Структура приложения такова, что необходимо разграничить экшены контроллеров(<strong>CController</strong>) по папкам и сделать их типовыми.<br>Экшены разграничиваются легко.<br>Предположим, что у нас есть ряд экшенов для администрирования. Всем им надо установить какие-либо свойства или же сделать при их вызове какие-то типовые действия.<br>Рассмотрим на примере изменения титла страницы.<br>Вот код моего базового экшена:<br>[code]<br><span style="font-family: courier new,courier;">class dotPlantAdminAction extends CAction<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp; &nbsp; * Constructor.<br>&nbsp;&nbsp;&nbsp; &nbsp; * Runs CAction constructor and makes some changes for Admin action type<br>&nbsp;&nbsp;&nbsp; &nbsp; */<br>&nbsp;&nbsp;&nbsp;&nbsp; public function&nbsp; __construct($controller,$id)<br>&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;parent::__construct($controller,$id);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this- >controller- >pageTitle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = dotPlant::getName() . " - Admin ";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; &nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; public function run()<br>&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>}</span><br>[/code]<br><br>В конструкторе мы сначала вызываем <span style="font-family: courier new,courier;">parent::__construct</span> с необходимыми параметрами. Это грубо-говоря идёт инициализация базового <strong>CAction</strong>.<br><br>Допустим у нас есть контроллер SettingsController. И нам нужно сделать его на основе нашего экшена. Создаем папку&nbsp; <strong>protected/controllers/Settings/</strong>. В ней создаем файл <strong>ActionAdmin.php</strong> с таким вот кодом:<br>[code]<br><pre><span style="font-family: courier new,courier;">class ActionAdmin extends dotPlantAdminAction</span></pre>
<pre><span style="font-family: courier new,courier;">{</span></pre>
<pre><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp; public function run()</span></pre>
<pre><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp; {</span></pre>
<pre><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp; $this- >controller- >render('admin');&nbsp;&nbsp;&nbsp; </span></pre>
<pre><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp; }</span></pre>
<pre><span style="font-family: courier new,courier;">}</span></pre>
[/code]<br><br>Видите? Нам достаточно только объявить run() и уже всё готово. При загрузке запустится необходимый нам конструктор базового контроллера с нашими действиями.<br><br>Вот по такому принципу я разграничиваю например админку в своей CMS <a title="dotPlant CMS based on Yii Framework" href="http://code.google.com/p/dotplant/">dotPlant</a> на Yii Framework. Слава PHP пятому!<br><br><a target="_blank" title="bethrezen в интернете" href="http://bethrezen.bestpersons.ru/invite11010"><img border="0" src="http://in1.bestpersons.ru/service/infoimimg/bethrezen" alt=""></a>]]></description>
<pubDate>Fri, 29 May 2009 06:42:56 GMT</pubDate>
<author>bethrezen</author>
</item>
	
</channel>
</rss>
