<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CTAPbIu_MABP&#039;s BLOG &#187; layout</title>
	<atom:link href="http://mabp.kiev.ua/tag/layout/feed/" rel="self" type="application/rss+xml" />
	<link>http://mabp.kiev.ua</link>
	<description>энтузиазм = 1/опыт © Старый Мавр</description>
	<lastBuildDate>Sat, 12 May 2012 07:40:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>Демка для канадцев</title>
		<link>http://mabp.kiev.ua/2010/10/28/demo-for-canadians/</link>
		<comments>http://mabp.kiev.ua/2010/10/28/demo-for-canadians/#comments</comments>
		<pubDate>Thu, 28 Oct 2010 09:01:49 +0000</pubDate>
		<dc:creator>CTAPbIu_MABP</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[grid]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[jqueryUI]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[tree]]></category>

		<guid isPermaLink="false">http://mabp.kiev.ua/?p=1280</guid>
		<description><![CDATA[Ну в общем все знают что я сейчас без работы, то есть на вольных хлебах. О том как я хлебаю я и буду рассказывать. Вот давече нашел каких-то noname канадцев, склепал им демку, но договориться не удалось. Собственно особенности демки: jqGrid, jsTree, Layouts. Без особой фантазии скреплено друг с другом - обычное бизнес приложение. Такие [...]]]></description>
			<content:encoded><![CDATA[<p>Ну в общем все знают что я сейчас без работы, то есть на вольных хлебах. О том как я хлебаю я и буду рассказывать.</p>
<span id="more-1280"></span>
<p>Вот давече нашел каких-то noname канадцев, склепал им <a href="http://mabp.kiev.ua/content/source/uberfine/" rel="nofollow external">демку</a>, но договориться не удалось. </p>
<p>Собственно особенности демки: <a href="http://www.trirand.com/blog/" rel="nofollow external">jqGrid</a>, <a href="http://www.jstree.com/" rel="nofollow external">jsTree</a>, <a href="http://layout.jquery-dev.net/" rel="nofollow external">Layouts</a>. Без особой фантазии скреплено друг с другом - обычное бизнес приложение. Такие кстати на ExtJS, наверное, лучше делать. Самым примечательным является D&#038;D между таблицей и деревом и изменение размеров аккордеона и таблицы при изменении размеров панели. Тыкайтесь :)</p>

<p>А ну и к случаю обновил пару статей: <a href="http://mabp.kiev.ua/2010/01/31/jqgrid/">jqGrid</a>, <a href="http://mabp.kiev.ua/2009/12/08/paint/">Paint</a>, <a href="http://mabp.kiev.ua/2009/12/10/ui-layout/">UI.Layout</a>. И соответствующие библиотеки до последних версий.</p>




]]></content:encoded>
			<wfw:commentRss>http://mabp.kiev.ua/2010/10/28/demo-for-canadians/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>UI.Layout</title>
		<link>http://mabp.kiev.ua/2009/12/10/ui-layout/</link>
		<comments>http://mabp.kiev.ua/2009/12/10/ui-layout/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 21:43:40 +0000</pubDate>
		<dc:creator>CTAPbIu_MABP</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[UI plugin]]></category>

		<guid isPermaLink="false">http://mabp.kiev.ua/?p=1152</guid>
		<description><![CDATA[Обычно я так называю статьи в которых выкладываю собственные плагины, но сегодня не тот случай. Я буду рассказывать о плагине который написали Fabrizio Balliano и Kevin Dalman Когда-то давно, когда только вышла первая бэтка YUI-Ext которая сейчас переросла в огромный фреймворк Ext JS, я увидел насколько красивыми могут быть лайауты ;) (кто знает как красиво [...]]]></description>
			<content:encoded><![CDATA[<p>Обычно я так называю статьи в которых выкладываю собственные плагины, но сегодня не тот случай. Я буду рассказывать о плагине который написали <a href="http://fabrizioballiano.net/" rel="nofollow external">Fabrizio Balliano</a> и <a href="http://allpro.net/" rel="nofollow external">Kevin Dalman</a></p>

<span id="more-1152"></span>
<p>Когда-то давно, когда только вышла первая бэтка YUI-Ext которая сейчас переросла в огромный фреймворк <a href="http://www.extjs.com/" rel="nofollow external">Ext JS</a>, я увидел насколько красивыми могут быть лайауты ;) (кто знает как красиво перевести это слово, согласно контексту, милости прошу в каменты).  Я скачал эту бэтку, сырую как подвал, открыл исходники блога Jack'a Slocum'a, потому что документации еще не было и наваял небольшой сайтик который НЕ стал моим блогом, как задумывалось, но перевернул мое отношение к javascript'y.</p>

<p>Работая в Инкоме, я хотел вернутся к этой красоте и простоте, но этот фреймворк идеально подходит для создания бизнес приложений с нуля и никаким боком не касался моего тогдашнего проекта - Киевстара. Раз выпало потрогать свежую версию Ext JS 2.3, когда к нам пришел проект от ГАИшников на создание веб-морды для базы данных угона. Куски того что получилось можно наблюдать <a href="http://mabp.kiev.ua/2009/06/12/cascading-comboboxes-on-gwt-extgwt-extjs-and-mysql/">тут</a> и <a href="http://mabp.kiev.ua/2009/04/12/gwt-extjs-connecting-to-mysql/">тут</a></p>

<p>А недавно я столкнулся с одним очень интересным дополнением к <a href="http://mabp.kiev.ua/tag/jquery-ui/">jQuery UI</a> и как вы поняли это был <a href="http://layout.jquery-dev.net/" rel="nofollow external">jQuery UI.Layout Plug-in</a>, который позволяет делать лайауты похожие на Ext JS. Конечно в силу молодости UI.Layout глючная и не много функциональная, но подает большие надежды. Под "не многофункциональностью" я понимаю отсутствие всяких всяких красивых плюшечек (табиков, кнопочек, менюшечек, панелек) как в Ext JS. Хотя это ведб не лайауты, а виджеты, правильно? UI.Layout интегрирована с табами  (их даже можно сортировать) и аккордеоном из jQuery UI, а также есть пример создания кнопок для открывания (стрелочка) и удерживания (кнопка) блока. Это уже хорошо :)</p>

<p>Вот пример плагина на стандартных настройках, без какого либа дополнительного CSS, больше примеров вы сможете посмотреть на сайте плагина.</p>


<link rel="stylesheet" type="text/css" media="screen" href="/content/css/ui-layout.css"/>
<script type="text/javascript" src="/content/source/jquery.layout-1.3.0.rc29.15.js"></script>

<script type="text/javascript">
jQuery(document).ready(function($) {
	myLayout = $("#myLayout").layout({ applyDefaultStyles: true });
});
</script>

<div id="myLayout" style="width:500px;height:300px;margin:auto;">
	<div class="ui-layout-center"><b>Center pane</b></div>
	<div class="ui-layout-north">North pane</div>
	<div class="ui-layout-west">West pane</div>
	<div class="ui-layout-south">South pane</div>
	<div class="ui-layout-east">East pane</div>
</div>

<p><strong>Updated 08.07.11</strong></p>
<p>К сожалению все потуги авторов зарелизить версию 1.3 тщетны :( Плагин сейчас находиться в версии 1.3RC29.15. Но не смотря на это плагин очень приятен в использовании. Он поддерживает возможность создавать неограниченного количество вложенных лайаутов, на каждую анимацию есть по два call-back'a в начале и в конце события, в следующей версии будет I18N, зачатки которой уже есть сейчас, 78 настроек (включая call-back) для каждого блока, возможность сохранения состояния в куках и многое другое.</p>

<p>В общем как вы поняли я сейчас плотно работаю с этим плагином и несколькими другими, так что вполне вероятно ожидать от меня новостей с этой кухни.</p>]]></content:encoded>
			<wfw:commentRss>http://mabp.kiev.ua/2009/12/10/ui-layout/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>YUI: extention</title>
		<link>http://mabp.kiev.ua/2006/12/11/yui-extention/</link>
		<comments>http://mabp.kiev.ua/2006/12/11/yui-extention/#comments</comments>
		<pubDate>Mon, 11 Dec 2006 13:16:40 +0000</pubDate>
		<dc:creator>CTAPbIu_MABP</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://mabp.kiev.ua/?p=1201</guid>
		<description><![CDATA[Автор Jack Locum предлагает верстать с помощью этой либы сайты. на самом деле это очень красиво но совершенно не удобно! сейчас я это докажу Предположим что у нас есть localhost и у него по адресу /yui/ лежит YUI а по адресу /yui-ext/ собственно сама библиотека Тогда создаем простой html код &#60;html&#62; &#60;head&#62; ... &#60;/head&#62; &#60;body&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>Автор <a href="http://www.jackslocum.com/blog/index.php" rel="nofollow external">Jack Locum</a> предлагает верстать с помощью этой либы сайты. на самом деле это очень красиво но совершенно не удобно! сейчас я это докажу</p>
<span id="more-1201"></span>
<p>Предположим что у нас есть localhost и у него по адресу /yui/ лежит YUI а по адресу /yui-ext/ собственно сама библиотека</p>

<p>Тогда создаем простой html код</p>

<pre><code class="html">
&lt;html&gt;
&lt;head&gt;
...
&lt;/head&gt;
&lt;body&gt;
...
&lt;/body&gt;
&lt;/html&gt;
</code></pre>


<p>В хедере мы разместим наш скрипт</p>

<pre><code class="html">
&lt;link rel="stylesheet" type="text/css" href="lib/yui-ext/resources/css/yui-ext.css" /&gt;&lt;!-- подключаем стили --&gt;

&lt;script type="text/javascript" src="lib/yui/utilities/utilities.js"&gt;&lt;/script&gt;&lt;!-- yui --&gt;
&lt;script type="text/javascript" src="lib/yui-ext/yui-ext.js"&gt;&lt;/script&gt;&lt;!-- yui-ext --&gt;

&lt;!-- добавляем собстенные стили --&gt;

&lt;style type="text/css"&gt;
	body {font:normal 9pt verdana; margin:0;padding:0;border:0px none;overflow:hidden;}
	.ylayout-panel-north {
	    border:0px none;
	    background-color:#c3daf9;
	}
	#nav {
	}
	#autoTabs, #center1, #center2, #west {
	    padding:10px;
	}
	#north, #south{
	    font:normal 8pt arial, helvetica;
	    padding:4px;
	}
	.ylayout-panel-center p {
	    margin:5px;
	}
	#props-panel .ygrid-col-0{
	}
	#props-panel .ygrid-col-1{
	}
&lt;/style&gt;
</code></pre>

<p>Теперь представим, что мы хотим создать класическую трехполосную ленту, с шапкой и футером. в левой полосе прсто коллонка, по центру две закладки, две, а справа коллонка поделена на три части горизонтально; подвал  по умолчанию отключен</p>

<p>для всего этого мы в body положим основной контейнер</p> 

<pre><code class="html">
&lt;div id ="container"&gt;...&lt;/div&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;а в него по очереди все блоки которые нам понадобятся&lt;/p&gt;
&lt;pre&gt;&lt;code class="html"&gt;
&lt;div id="west" class="ylayout-inactive-content"&gt;west&lt;/div&gt;
&lt;div id="north" class="ylayout-inactive-content"&gt;north&lt;/div&gt;
&lt;div id="autoTabs" class="ylayout-inactive-content"&gt;autoTabs&lt;/div&gt;
&lt;div id="center2" class="ylayout-inactive-content"&gt;center2&lt;/div&gt;
&lt;div id="center1" class="ylayout-inactive-content"&gt;center1&lt;/div&gt;
  
&lt;div id="content1" class="ylayout-inactive-content"&gt;content1&lt;/div&gt;
&lt;div id="content2" class="ylayout-inactive-content"&gt;content2&lt;/div&gt;
&lt;div id="content3" class="ylayout-inactive-content"&gt;content3&lt;/div&gt;
  
&lt;div id="inner1" class="ylayout-inactive-content"&gt;inner1&lt;/div&gt;
&lt;div id="inner2" class="ylayout-inactive-content"&gt;inner2&lt;/div&gt;
&lt;div id="inner3" class="ylayout-inactive-content"&gt;inner3&lt;/div&gt;
&lt;div id="sqldebug" class="ylayout-inactive-content"&gt;sqldebug&lt;/div&gt;
&lt;div id="gpcdebug" class="ylayout-inactive-content"&gt;gpcdebug&lt;/div&gt;
</code></pre>

<p>Теперь приспупаем писать инициализатор</p>

<pre><code class="javascript">
        // определяем функцию которая будет стартовать наш скрипт
	Example = function(){
	        // в теле пусто 
	        return {
	            // зато она возвращает объект с одним свойством init
	            init : function(){
	               // определяем новый layout.
	               // кажждый объект BorderLayout имеет 5 свойств north west east south center
	               var layout = new YAHOO.ext.BorderLayout(document.body, {
	                    hideOnLayout: true,
	                    // говорим что north
	                    north: {
	                        // не resizable
	                        split:false,
	                        // с шириной 100
	                        initialSize: 100,
	                        // без титлбара
	                        titlebar: false
	                    },
	                    // west 
	                    west: {
	                        // resizable
	                        split:true,
	                        // появляется с размером 200
	                        initialSize: 200,
	                        // минимум при растягивании 175 
	                        minSize: 175,
	                        // максимум 400
	                        maxSize: 400,
	                        // с титл баром
	                        titlebar: true,
	                        // с кнопкой закрыть
	                        collapsible: true,
	                        // анимированный 
                            animate: true
	                    },
	                    east: {
	                        split:false,
	                        initialSize: 200,
	                        minSize: 175,
	                        maxSize: 400,
	                        titlebar: true,
	                        collapsible: true,
                            animate: true
	                    },
	                    south: {
	                        split:true,
	                        initialSize: 100,
	                        minSize: 100,
	                        maxSize: 200,
	                        titlebar: true,
	                        collapsible: true,
                            animate: true,
	                    // с скролбаром если надо
                            autoScroll:true
	                    },
	                    center: {
	                        // закладки сверху
	                        tabPosition: 'top',
	                        autoScroll:true
	                    }
	                });
	                // начинаем создавать елементы слоя
	                layout.beginUpdate();
	                // северный (хедер)
	                layout.add('north', new YAHOO.ext.ContentPanel('north', 'North'));
	                // западный с надписью в титлбаре Navigation Panel
			layout.add('west', new YAHOO.ext.ContentPanel('west', {title: 'Navigation Panel'}));
	                // перввая закладка центра
	                layout.add('center', new YAHOO.ext.ContentPanel('center1', {title: 'Main block', closable: false}));
	                // вторая закладка центра
	                layout.add('center', new YAHOO.ext.ContentPanel('center2', {title: 'Center Panel', closable: false}));
	                // по умолчанию открыта первая закладка
	                layout.getRegion('center').showPanel('center1');
	                
	                /*
	                Теперь рилическое отступление по поводу того чем неудобна эта либа
	                нельзя создать 5 блоков друг под другом можно только 3
	                но можно в каждом из трех еще по три и в каждом следующем еще по три
	                */

	                // создаем внутренний слой правого столбца
	                var innerLayout = new YAHOO.ext.BorderLayout('content1', {
	                    // нижняя часть
	                    south: {
	                        //split:true,
	                        initialSize: 100,
	                        collapsible:true,
	                        titlebar: true
	                    },
	                    // центр пуст
	                    center: { }
	                });
	                // создаем нутренний елемент внутреннего елемента 'юг'
	                var southInnerLayout  = new YAHOO.ext.BorderLayout('content2', {
	                    // только центр
	                    center: { }
	                });
	                
	                // добавляем во нутренний елемент внутреннего елемента 'юг' центральный блок
	                /*
	                вот тут былобы неплохо осознавать обектную модель 	                
	                происходящего потому что словами это обьяснять очень сложно
	                */

	                southInnerLayout.add('center', new YAHOO.ext.ContentPanel('inner1', {title:'More Information', closable:true}));

	                // создаем нутренний елемент внутреннего елемента 'центер'
	                var centerInnerLayout  = new YAHOO.ext.BorderLayout('content3', {
	                    south: {
	                        //split:true,
	                        initialSize: 100,
	                        collapsible:true,
	                        titlebar: true
	                    },
	                    center: { }
	                });
	                
	                // добавляем во нутренний елемент внутреннего елемента 'центер' центральный блок
	                centerInnerLayout.add('center', new YAHOO.ext.ContentPanel('inner2', {title:'More Information', closable:true}));
	                // добавляем во нутренний елемент внутреннего елемента 'центер' нижний блок
	                centerInnerLayout.add('south', new YAHOO.ext.ContentPanel('inner3', {title:'More Information', closable:true}));
	                // закрепляем к внутреннему елементу его 'детей' к блоку 'юг'
	                innerLayout.add('south', new YAHOO.ext.NestedLayoutPanel(southInnerLayout, {title:'More Information', closable:true}));
	                // закрепляем к внутреннему елементу его 'детей' к блоку 'центер'
	                innerLayout.add('center', new YAHOO.ext.NestedLayoutPanel(centerInnerLayout, {title:'More Information', closable:true}));

	                // закрепляем за елементов east (оноже левая коллонка) все то что мы токачто насоздавали, заголовок More Information, и кнопка закрыть
	                layout.add('east', new YAHOO.ext.NestedLayoutPanel(innerLayout, {title:'More Information', closable:true}));
	                // вот тут по вашему желанию подвал
	                if (false)
	                {
	                        // первая закладка
	                	layout.add('south', new YAHOO.ext.ContentPanel('sqldebug', {title: 'SQL-Debug', closable: true}));
	                        // и вторая
	                	layout.add('south', new YAHOO.ext.ContentPanel('gpcdebug', {title: 'GPC-Debug', closable: true}));
	                        // показываем вторую
	                	layout.getRegion('south').showPanel('gpcdebug');
	                }
	                // закрепляем елементы слоя
	                layout.endUpdate();
	           }
	     }
	       
	}();// конец функции  Example
       // стартуем Example при полной загрузке страницы 
	YAHOO.ext.EventManager.onDocumentReady(Example.init, Example, true); 
</code></pre>

<p>Теперь еще одна поправка: смотрите (кто сделал конечно) вся левая коллонка отезжает на лево, вся правая - на право.</p>
<p>А в правой коллонке начинаются чудеса. Вехний блок никуда не девается а вот нижнии два, каждый по очереди, отезжает вниз и могут быть закрыты, а вот кульминация, если закрыть средний блок то нижний оставшись без родителя (учим ООП) не сможет быть закрыт не имея ссылки на то откуда его надо удалить!</p>

<p>а и вот еще при скрытии/закрытии блока используется комманда </p>
<pre><code class="javascript">
Example.layout.getRegion('center').hidePanel('center1'); 
</code></pre>
<p>где center и center1 координаты (id) радителей блока, также его можно и показать прилепив функцию на ссылку или кнопку</p>
<pre><code class="javascript">
Example.layout.getRegion('center').showPanel('center1'); 
</code></pre>

<p>PS ну вот и все ребята, пример рабочий можете пробовать, писем, пожеланий, комментов и апллодисментов конечноже не надо!!! </p>
<p>PSS спасибо всем кто читал!!!</p>]]></content:encoded>
			<wfw:commentRss>http://mabp.kiev.ua/2006/12/11/yui-extention/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

