<?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>AjaxBlog</title>
	<atom:link href="http://ajaxblog.ru/feed/" rel="self" type="application/rss+xml" />
	<link>http://ajaxblog.ru</link>
	<description>ajax, javascript, css, php</description>
	<lastBuildDate>Tue, 12 Jan 2010 16:54:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Скрещиваем jqGrid и Open Flash Chart</title>
		<link>http://ajaxblog.ru/2009/10/skreshhivaem-jqgrid-i-open-flash-chart/</link>
		<comments>http://ajaxblog.ru/2009/10/skreshhivaem-jqgrid-i-open-flash-chart/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 18:42:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Мои проекты]]></category>
		<category><![CDATA[jqGrid]]></category>
		<category><![CDATA[Open Flash Chart]]></category>
		<category><![CDATA[SWFobject]]></category>

		<guid isPermaLink="false">http://ajaxblog.ru/?p=264</guid>
		<description><![CDATA[Вывод данных в виде таблице удобно тем, что предостовляет большие возможности работы с ними (сортировка, фильтрация, выборки). И с этим прекрасно справляется плагин jqGrid. А если мы хотим отображать данные выводимые в jqGrid в виде графика. Причем синхронно обновлять график &#8230; <a href="http://ajaxblog.ru/2009/10/skreshhivaem-jqgrid-i-open-flash-chart/">Далее, еще интереснее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Вывод данных в виде таблице удобно тем, что предостовляет большие возможности работы с ними (сортировка, фильтрация, выборки). И с этим прекрасно справляется плагин jqGrid.</p>
<p>А если мы хотим отображать данные выводимые в jqGrid в виде графика. Причем синхронно обновлять график вместе с данными в таблице. Например так.</p>
<p><span id="more-264"></span></p>
<p><img class="alignnone size-full wp-image-265" title="jqgrid-open-flash-chart" src="http://ajaxblog.ru/wp-content/uploads/2009/10/jqgrid-open-flash-chart.gif" alt="jqgrid-open-flash-chart" width="593" height="409" /></p>
<p>Для построения графика я выбрал флешь библиотеку <a href="http://teethgrinder.co.uk/open-flash-chart-2/">Open Flash Chart</a>, которая себе прекрасно зарекомендовала. Если вам что то, придется не по душе в этой библиотеки, вы всегда сможете изменить . Так как <a href="http://teethgrinder.co.uk/open-flash-chart-2/">Open Flash Chart</a> &#8211; open source проект.</p>
<p>Еще нам понадобиться js библиотека &#8211; <a href="http://code.google.com/p/swfobject/">SWFobject</a>. Ее задача поместить флешку в нужное нам место. В принципе мы смогли бы обойтись и без нее, но она позволяет решить: проблемы кросс-браузерности, наличие нужной версии флешь проигрывателя и  т.д.</p>
<p>Основная идея скрипта.</p>
<ol>
<li>у jqGrid есть событие loadComplete &#8211; на него мы подвешиваем генерацию графика. То есть каждый раз когда грид обновляется, у нас будет обновятся график.</li>
<li>а данные для графика мы будем получать через пользовательский массив , с помощью функции getUserData()</li>
</ol>
<p>Вот пример кода.</p>
<pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">"text/javascript"</span> src<span style="color: #339933;">=</span><span style="color: #3366CC;">"/js/swfobject.js"</span><span style="color: #339933;">&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span>

$<span style="color: #009900;">(</span>document<span style="color: #009900;">)</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">(</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span>
	<span style="color: #003366; font-weight: bold;">var</span> chartCreate <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> data_statistics_chart <span style="color: #339933;">=</span> <span style="color: #3366CC;">''</span><span style="color: #339933;">;</span>

	$<span style="color: #009900;">(</span><span style="color: #3366CC;">"#statistics-list"</span><span style="color: #009900;">)</span>.<span style="color: #660066;">jqGrid</span><span style="color: #009900;">(</span><span style="color: #009900;">{</span>
		...некоторый ваш код...

		<span style="color: #006600; font-style: italic;">// функция вызывается в тот момент когда приходят данные в грид</span>
		loadComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span>
			<span style="color: #006600; font-style: italic;">// получаем пользовательские данные</span>
			<span style="color: #003366; font-weight: bold;">var</span> udata <span style="color: #339933;">=</span> $<span style="color: #009900;">(</span><span style="color: #3366CC;">"#statistics-list"</span><span style="color: #009900;">)</span>.<span style="color: #660066;">getUserData</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
			<span style="color: #006600; font-style: italic;">// вызываем функцию loadChartData с нашими данными udata.chart_data для флеши</span>
			loadChartData<span style="color: #009900;">(</span>udata.<span style="color: #660066;">chart_data</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">}</span>
	<span style="color: #009900;">}</span><span style="color: #009900;">)</span>.<span style="color: #660066;">navGrid</span><span style="color: #009900;">(</span><span style="color: #3366CC;">'#statistics-pager'</span><span style="color: #339933;">,</span> <span style="color: #009900;">{</span>refresh<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>add<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>edit<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>del<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>search<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">}</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>

	<span style="color: #003366; font-weight: bold;">function</span> loadChartData<span style="color: #009900;">(</span>data<span style="color: #009900;">)</span> <span style="color: #009900;">{</span>
		data_statistics_chart <span style="color: #339933;">=</span> data<span style="color: #339933;">;</span>
		<span style="color: #006600; font-style: italic;">// проверяем мы создали объект флешь</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">(</span>chartCreate<span style="color: #009900;">)</span> <span style="color: #009900;">{</span> <span style="color: #006600; font-style: italic;">// если да, то</span>
			<span style="color: #006600; font-style: italic;">// находим флешку</span>
			chart <span style="color: #339933;">=</span> swfobject.<span style="color: #660066;">getObjectById</span><span style="color: #009900;">(</span><span style="color: #3366CC;">'statistics_chart'</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
			<span style="color: #006600; font-style: italic;">// загружаем в нее полученные данные</span>
			chart.<span style="color: #660066;">load</span><span style="color: #009900;">(</span>data<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">}</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">{</span> <span style="color: #006600; font-style: italic;">// создаем флешку с помощью js библиотеки swfobject</span>
			chartCreate <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
			swfobject.<span style="color: #660066;">embedSWF</span><span style="color: #009900;">(</span>
				<span style="color: #006600; font-style: italic;">// откуда берем саму флешку</span>
				<span style="color: #3366CC;">'/flash/open-flash-chart.swf'</span><span style="color: #339933;">,</span>
				<span style="color: #006600; font-style: italic;">// куда ее помещаем</span>
				<span style="color: #3366CC;">'statistics_chart'</span><span style="color: #339933;">,</span>
				<span style="color: #006600; font-style: italic;">// настройки флешки</span>
				<span style="color: #3366CC;">'734'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'270'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'9.0.0'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'expressInstall.swf'</span><span style="color: #339933;">,</span>
				<span style="color: #006600; font-style: italic;">// данные откуда флешка будет брать</span>
				<span style="color: #006600; font-style: italic;">// обратите внимания! флешка ждет на входе имя функции, </span>
				<span style="color: #006600; font-style: italic;">// поэтому сразу передать данные не получаетьса</span>
				<span style="color: #009900;">{</span><span style="color: #3366CC;">'get-data'</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">'get_data_statistics_chart'</span><span style="color: #009900;">}</span><span style="color: #339933;">,</span>
				<span style="color: #009900;">{</span><span style="color: #3366CC;">'wmode'</span><span style="color: #339933;">:</span><span style="color: #3366CC;">'opaque'</span><span style="color: #009900;">}</span>
			<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">}</span>
	<span style="color: #009900;">}</span>

	<span style="color: #006600; font-style: italic;">// сама функция которая вернет нужные данные флешки</span>
	<span style="color: #003366; font-weight: bold;">function</span> get_data_statistics_chart<span style="color: #009900;">(</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span>
		<span style="color: #000066; font-weight: bold;">return</span> data_statistics_chart<span style="color: #339933;">;</span>
	<span style="color: #009900;">}</span>
<span style="color: #009900;">}</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>

<span style="color: #339933;">&lt;</span>div id<span style="color: #339933;">=</span><span style="color: #3366CC;">'statistics_chart'</span><span style="color: #339933;">&gt;&lt;/</span>div<span style="color: #339933;">&gt;</span>

<span style="color: #339933;">&lt;</span>div <span style="color: #003366; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #3366CC;">"grid"</span><span style="color: #339933;">&gt;</span>
	<span style="color: #339933;">&lt;</span>table id<span style="color: #339933;">=</span><span style="color: #3366CC;">"statistics-list"</span> <span style="color: #003366; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #3366CC;">"scroll"</span><span style="color: #339933;">&gt;&lt;/</span>table<span style="color: #339933;">&gt;</span>
	<span style="color: #339933;">&lt;</span>div id<span style="color: #339933;">=</span><span style="color: #3366CC;">"statistics-pager"</span> <span style="color: #003366; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #3366CC;">"scroll"</span><span style="color: #339933;">&gt;&lt;/</span>div<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span></pre>
]]></content:encoded>
			<wfw:commentRss>http://ajaxblog.ru/2009/10/skreshhivaem-jqgrid-i-open-flash-chart/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Гаджет из фотошопа</title>
		<link>http://ajaxblog.ru/2009/10/gadzhet-iz-fotoshopa/</link>
		<comments>http://ajaxblog.ru/2009/10/gadzhet-iz-fotoshopa/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 11:28:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мои проекты]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Инструмент разработчика]]></category>

		<guid isPermaLink="false">http://ajaxblog.ru/?p=254</guid>
		<description><![CDATA[Для одного рабочего проекта нужно было создать &#171;по быстрому&#187; прототип системы. Основная логика интерфейса была,  все что видеть пользователь &#8211; это гаджет. К сожалению интерфейс не был одобрен руководством, а прототип остался, по этому, если кто-то использует его в своем &#8230; <a href="http://ajaxblog.ru/2009/10/gadzhet-iz-fotoshopa/">Далее, еще интереснее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Для одного рабочего проекта нужно было создать &laquo;по быстрому&raquo; прототип системы. Основная логика интерфейса была,  все что видеть пользователь &#8211; это гаджет. К сожалению интерфейс не был одобрен руководством, а прототип остался, по этому, если кто-то использует его в своем проекте, я не буду против. Обращаю ваше внимания, так как это прототип делали &laquo;по быстрому&raquo; &#8211; то дизайн и логика поведения была взята с одной очень уважаемой мною программы.</p>
<p><span id="more-254"></span></p>
<p>И так что он умеет:</p>
<ol>
<li>Двигаться по странице (move)</li>
<li>Изменять размеры (resize)</li>
<li>Имеет возможность настроить максимальную ширину панели (max width)</li>
<li>Имеет два состояния: нормальное (normal) и компактное (compact)</li>
<li>Имеет возможность сортировать гаджеты внутри панельки (sort)</li>
<li>Просмотр в компактном режиме</li>
</ol>
<p>Нормальный режим</p>
<p><img class="alignnone size-full wp-image-256" title="gadget-normal" src="http://ajaxblog.ru/wp-content/uploads/2009/10/gadget-normal.gif" alt="gadget-normal" width="428" height="663" /></p>
<p>Компактный режим</p>
<p><img class="alignnone size-full wp-image-255" title="gadget-compact" src="http://ajaxblog.ru/wp-content/uploads/2009/10/gadget-compact.gif" alt="gadget-compact" width="310" height="500" /></p>
<p>Смотрим:  <a href="http://samples.ajaxblog.ru/work/gadget/panel.html">рабочий пример гаджета</a></p>
<p>Технология:  jQuery + UI, CSS, HTML &#8211; все просто. Если кому-то нужно будет доработать гаджет или адаптировать к своим требованием, пишите &#8211; договоримся.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxblog.ru/2009/10/gadzhet-iz-fotoshopa/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Скрещиваем jqGrid и FCKeditor</title>
		<link>http://ajaxblog.ru/2009/10/ckreshivaem-jqgrid-i-fckeditor/</link>
		<comments>http://ajaxblog.ru/2009/10/ckreshivaem-jqgrid-i-fckeditor/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 09:25:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://ajaxblog.ru/?p=246</guid>
		<description><![CDATA[Есть прекрасный программный продукт jqGrid. У него есть неплохой функционал по редактированию данных в таблице, вот только нет возможности редактировать текст через какой-либо визуальный редактор, например FCKeditor. Почему FCKeditor? Во первых он достаточно стабилен, во вторых его легко настроить под &#8230; <a href="http://ajaxblog.ru/2009/10/ckreshivaem-jqgrid-i-fckeditor/">Далее, еще интереснее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Есть прекрасный программный продукт jqGrid. У него есть неплохой функционал по редактированию данных в таблице, вот только нет возможности редактировать текст через какой-либо визуальный редактор, например FCKeditor.</p>
<p>Почему FCKeditor?<br />
Во первых он достаточно стабилен, во вторых его легко настроить под себя, и наверное самое главное у меня был опыт работы с ним.</p>
<p>Поиск в интернете ничего мне не дал, … значить придется все делать самому.</p>
<p>Все оказалось на удивление просто</p>
<p><span id="more-246"></span></p>
<pre class="javascript" style="font-family:monospace;">&lt;script type="text/javascript" src="/js/lib/fckeditor/fckeditor.js"&gt;&lt;/script&gt;

<span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">"text/javascript"</span><span style="color: #339933;">&gt;</span>
$<span style="color: #009900;">(</span>document<span style="color: #009900;">)</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">(</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span>
	$<span style="color: #009900;">(</span><span style="color: #3366CC;">"#news-list"</span><span style="color: #009900;">)</span>.<span style="color: #660066;">jqGrid</span><span style="color: #009900;">(</span><span style="color: #009900;">{</span>
		...некоторый ваш код...
	<span style="color: #009900;">}</span><span style="color: #009900;">)</span>.<span style="color: #660066;">navGrid</span><span style="color: #009900;">(</span><span style="color: #3366CC;">'#news-pager'</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">{</span>refresh<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>add<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>edit<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>del<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>search<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">}</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">{</span>
			<span style="color: #006600; font-style: italic;">// edit parameters</span>
			width<span style="color: #339933;">:</span> <span style="color: #CC0000;">500</span><span style="color: #339933;">,</span>
			reloadAfterSubmit<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
			beforeShowForm<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span>
				fckeditor<span style="color: #009900;">(</span><span style="color: #3366CC;">'text'</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">}</span><span style="color: #339933;">,</span>
			onclickSubmit<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span>
				<span style="color: #003366; font-weight: bold;">var</span> oEditorText <span style="color: #339933;">=</span> FCKeditorAPI.<span style="color: #660066;">GetInstance</span><span style="color: #009900;">(</span><span style="color: #3366CC;">'text'</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
				<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009900;">{</span>
					text<span style="color: #339933;">:</span> oEditorText.<span style="color: #660066;">GetHTML</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span>
				<span style="color: #009900;">}</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">}</span>
		<span style="color: #009900;">}</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">{</span>
			<span style="color: #006600; font-style: italic;">// add parameters</span>
			reloadAfterSubmit<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
			beforeShowForm<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span>
				<span style="color: #006600; font-style: italic;">// Перед тем как показать форму, вставляем в элемент с id='text' наш редактор</span>
				fckeditor<span style="color: #009900;">(</span><span style="color: #3366CC;">'text'</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">}</span><span style="color: #339933;">,</span>
			onclickSubmit<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span>
				<span style="color: #006600; font-style: italic;">// Получаем введенный и отформатированный текст в редакторе</span>
				<span style="color: #003366; font-weight: bold;">var</span> oEditorText <span style="color: #339933;">=</span> FCKeditorAPI.<span style="color: #660066;">GetInstance</span><span style="color: #009900;">(</span><span style="color: #3366CC;">'text'</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
				<span style="color: #006600; font-style: italic;">// Возвращаем его в виде html текста</span>
				<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009900;">{</span>
					text<span style="color: #339933;">:</span> oEditorText.<span style="color: #660066;">GetHTML</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span>
				<span style="color: #009900;">}</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">}</span>
		<span style="color: #009900;">}</span><span style="color: #339933;">,</span>
		<span style="color: #009900;">{</span>
			<span style="color: #006600; font-style: italic;">//delete parameters</span>
		<span style="color: #009900;">}</span>
	<span style="color: #009900;">)</span><span style="color: #339933;">;</span>

	<span style="color: #003366; font-weight: bold;">function</span> fckeditor<span style="color: #009900;">(</span>id<span style="color: #009900;">)</span> <span style="color: #009900;">{</span>
		<span style="color: #003366; font-weight: bold;">var</span> oFCKeditor <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> FCKeditor<span style="color: #009900;">(</span>id<span style="color: #009900;">)</span> <span style="color: #339933;">;</span>
		oFCKeditor.<span style="color: #660066;">ReplaceTextarea</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">}</span>
<span style="color: #009900;">}</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>

&lt;h1&gt;&lt;?=_('Новости')?&gt;&lt;/h1&gt;

&lt;div class="grid"&gt;
	&lt;table id="news-list" class="scroll"&gt;&lt;/table&gt;
	&lt;div id="news-pager" class="scroll"&gt;&lt;/div&gt;
&lt;/div&gt;</pre>
<p>А вот так это выглядит в работе</p>
<p><img class="alignnone size-full wp-image-249" title="jqgrid-fckeditor" src="http://ajaxblog.ru/wp-content/uploads/2009/10/jqgrid-fckeditor.png" alt="jqgrid-fckeditor" width="593" height="458" /></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxblog.ru/2009/10/ckreshivaem-jqgrid-i-fckeditor/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Обзор CMS для создания социальной сети</title>
		<link>http://ajaxblog.ru/2009/05/obzor-cms-dlya-sozdaniya-socialnojj-seti/</link>
		<comments>http://ajaxblog.ru/2009/05/obzor-cms-dlya-sozdaniya-socialnojj-seti/#comments</comments>
		<pubDate>Thu, 28 May 2009 06:05:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Находки]]></category>

		<guid isPermaLink="false">http://ajaxblog.ru/?p=233</guid>
		<description><![CDATA[Для одного из проектов, нужно было найти CMS для построения социальной сети. Основное требование &#8211; бесплатность и открытость кода. Результатом поисков стал этот маленький обзор существующих решений. BuddyPress это пакет специфических плагинов для WordPress MU позволяющих превратить движок блога в &#8230; <a href="http://ajaxblog.ru/2009/05/obzor-cms-dlya-sozdaniya-socialnojj-seti/">Далее, еще интереснее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Для одного из проектов, нужно было найти CMS для построения социальной сети. Основное требование &#8211; бесплатность и открытость кода. Результатом поисков стал этот маленький обзор существующих решений.</p>
<p><span id="more-233"></span></p>
<table border="0">
<tbody>
<tr>
<td><img src="/wp-content/uploads/social-network/buddypress.gif" alt="" /></td>
<td><strong>BuddyPress</strong> это пакет специфических плагинов для WordPress MU позволяющих превратить  движок блога в социальную сеть. Плохо только то, что не совсем стабильная еще сборка.</p>
<p>Cайт: <a href="http://buddypress.org/">http://buddypress.org</a><br />
Пример: <a href="http://testbp.org/">http://testbp.org</a></td>
</tr>
<tr>
<td><img src="/wp-content/uploads/social-network/pligg.gif" alt="" /></td>
<td><strong>Pligg</strong> — клон digg.com, сайтовый движок для создания новостных сайтов. Пользователи голосуют за понравившиеся новости, в результате самые интересные сообщения показываются на главной странице. Лучший бесплатный движок в этой нише.</p>
<p>Cайт: <a href="http://www.pligg.com">http://www.pligg.com</a><br />
Пример: <a href="http://www.pligg.com/demo">http://www.pligg.com/demo</a></td>
</tr>
<tr>
<td><img src="/wp-content/uploads/social-network/socialwebcms.gif" alt="" /></td>
<td><strong>Sociall Web CMS</strong> &#8211; базируется на системе Pligg, которую начал разрабатывать AshDigg уже 2 года назад. В феврале 2008 года он покинул проект для начала новой разработки.</p>
<p>Данная CMS построена по такому же принципу сайтов социальных новостей как Digg.com и reddit.com, пользователи представляют свои url/статью в предоставленные разделы сайта, а другие пользователи потом голосуют за неё. Когда статья получит определённое количество голосов, она попадёт на главную страницу.</p>
<p>Cайт: <a href="http://socialwebcms.com">http://socialwebcms.com</a></td>
</tr>
<tr>
<td><img src="/wp-content/uploads/social-network/aroundme.gif" alt="" /></td>
<td><strong>AroundMe</strong> &#8211; CMS с множеством опций таких как: блоги, форумы, гостевая книга, вики, мультиязычность и многие другие.</p>
<p>Cайт: <a href="http://www.barnraiser.org/aroundme">http://www.barnraiser.org/aroundme</a><br />
Пример: <a href="http://www.ungdomstorget.se">http://www.ungdomstorget.se</a></td>
</tr>
<tr>
<td><img src="/wp-content/uploads/social-network/elgg.gif" alt="" /></td>
<td><strong>Elgg</strong> &#8211; хорошее решение для построение свой социальной сети. Из плюсов есть хорошая документация по движку, форум подержки, свое комьюнити.</p>
<p>Cайт: <a href="http://elgg.org">http://elgg.org</a><br />
Пример: <a href="http://www.redpai.org">http://www.redpai.org</a></td>
</tr>
<tr>
<td><img src="/wp-content/uploads/social-network/lovdbyless.gif" alt="" /></td>
<td><strong>Lovdbyless</strong> &#8211; написана на Ruby on Rails, ее особенность эта интеграция с популярными сервисами, такими как Flickr и YouTube.</p>
<p>Cайт: <a href="http://lovdbyless.com">http://lovdbyless.com</a><br />
Пример: <a href="http://try.lovdbyless.com">http://try.lovdbyless.com</a></td>
</tr>
<tr>
<td><img src="/wp-content/uploads/social-network/explay.gif" alt="" /></td>
<td><strong>Explay</strong> &#8211; &laquo;наш ответ&raquo; движкам социальной сети, поэтому проблем с русификация нет в принципе. К сожалению, весьма не доработанная.</p>
<p>Cайт: <a href="http://explay.su">http://explay.su</a></td>
</tr>
<tr>
<td><img src="/wp-content/uploads/social-network/livestreet.gif" alt="" /></td>
<td><strong>Livestreet</strong> &#8211; Еще одна русская cms, клон хабры, как по функциональности так и по внешнему виду.</p>
<p>Cайт: <a href="http://livestreet.ru">http://livestreet.ru</a></td>
</tr>
<tr>
<td><img src="/wp-content/uploads/social-network/bigstreet.gif" alt="" /></td>
<td><strong>Bigstreet</strong> &#8211; тоже русская cms, самая динамически развиваемая, и поэтому наверное самая перспективная. По функциональности очень напоминает хабру, но в последнем релизе, появились интересные новые модули. Разработчики стали отходит от &laquo;подражательство&raquo; хабре &#8211; и это хорошо.</p>
<p>Cайт: <a href="http://bigstreet.ru">http://bigstreet.ru</a></td>
</tr>
<tr>
<td><img src="/wp-content/uploads/social-network/instantcms.gif" alt="" /></td>
<td><strong>InstantCMS</strong> это бесплатная многофункциональная система управления сообществами. В первую очередь система ориентирована на создание социальных сетей, сайтов знакомств и онлайн-клубов.</p>
<p>Cайт: <a href="http://instantcms.ru">http://instantcms.ru</a></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://ajaxblog.ru/2009/05/obzor-cms-dlya-sozdaniya-socialnojj-seti/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Расширения и модули для Firebug</title>
		<link>http://ajaxblog.ru/2009/05/rasshireniya-i-moduli-dlya-firebug/</link>
		<comments>http://ajaxblog.ru/2009/05/rasshireniya-i-moduli-dlya-firebug/#comments</comments>
		<pubDate>Sun, 24 May 2009 12:33:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Firebug]]></category>
		<category><![CDATA[Kohana]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Плагины]]></category>

		<guid isPermaLink="false">http://ajaxblog.ru/?p=221</guid>
		<description><![CDATA[Что общего у таких программ как ACDSee, Nero, Winamp&#8230; то, что из когда-то любимых программ, сделали неповоротливых и громоздких &#171;монстров&#187;. Известная проблема универсальности, чем более универсальным становиться программный продукт, тем более он становиться тормознутый, глючный и неудобный для работы с &#8230; <a href="http://ajaxblog.ru/2009/05/rasshireniya-i-moduli-dlya-firebug/">Далее, еще интереснее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div style="background: transparent url(/wp-content/uploads/firebug/bg-firebug-1.png) no-repeat 100% 100%">
Что общего у таких программ как ACDSee, Nero, Winamp&#8230; то, что из когда-то любимых программ, сделали неповоротливых и громоздких &laquo;монстров&raquo;. Известная проблема универсальности, чем более универсальным становиться программный продукт, тем более он становиться тормознутый, глючный и неудобный для работы с ним.</p>
<p>Тем же путем, идет Opera (зачем там IRC-чат, почтовый клиент и BitTorrent, мне это не нужно). Я понимаю что мои предпочтения по функциональности браузера могут не совпадать с другими пользователями, которым это нужно. Как угодить всем, ответ прост и давно известен &#8211; расширения, модули и плагины.</p>
<p>Я очень рад что разработчики Firefox пошли именно этим путем. Я могу настроить функциональность своего браузера именно так как мне нужно и любо.</p>
<p>Об одном из таком расширении мы и поговорим. Это Firebug.
</p></div>
<p><span id="more-221"></span></p>
<h3>Расширения для Firebug</h3>
<p>Полный список их приводить не буду, вы сами сможете выбрать то что вам нужно. Например здесь:</p>
<ul>
<li><a href="http://getfirebug.com/extensions/index.html">http://getfirebug.com/extensions/index.html</a></li>
<li><a href="http://habrahabr.ru/blogs/firefox/50579/">http://habrahabr.ru/blogs/firefox/50579</a></li>
</ul>
<p>Вот наверно самые востребованные.</p>
<p><img src='/wp-content/uploads/firebug/firephp.png'> <a href="http://www.firephp.org/">FirePHP</a> &#8211; расширение номер один для Firebug. Если вы конечно, PHP программист:) Что тут говорить, мой рабочий инструмент. Поэтому маловероятно, что я перейду на какой-то другой браузер.</p>
<p><img src="/wp-content/uploads/firebug/firecookie.png"> <a href="http://www.janodvarko.cz/firecookie">Firecookie</a> &#8211; показывает все куки доступные на текущей веб-странице. Вы можете видеть, когда они был изменены, и вы можете изменить ваши настройки куков для принятия или отказа прямо из Firebug панели. Очень полезное расширение. Часто приходиться использовать его, когда проверяешь работу кода авторизации.</p>
<p><img src="/wp-content/uploads/firebug/default.png"> <a href="http://billwscott.com/jiffyext/index.html">Jiffy</a> &#8211; делалась как более функциональный аналог вкладки Net. но как-то у меня не сложилось. Наверное мне не нужен такой расширенный функционал. мне вполне хватает функционала вкладки Net.</p>
<p><img src="/wp-content/uploads/firebug/pixelperfect.png"> <a href="http://www.pixelperfectplugin.com/">Pixel Perfect</a> &#8211; позволяет накладывать макет дизайна прямо на существующий сайт. Хорошее расширение, за исключением одного обидного недостатка &#8211; можно смешать картинку только на один пиксел за раз. Однажды мне нужно было срочно подогнать картинку к дизайну, сдвинув ее на 200 пикселей&#8230; думал сломаю мышку кликая.</p>
<p><img src="/wp-content/uploads/firebug/firerainbow.png"> <a href="http://firerainbow.binaryage.com/">FireRainbow</a> &#8211; раскрашивает ваш js код. Предупреждаю, находиться в стадии экспериментального расширения. у меня не возникло проблем. работает отлично.</p>
<p><img src="/wp-content/uploads/firebug/yslow.png"> YSlow &#8211; вроде как позволяет проанализировать ваши страницы и рассказать что нужно сделать что-бы ускорить ее. Рекомендации основаны на опыте написание разработчиков Yahoo высокопроизводительных сайтов. То есть стоит прислушаться. Но у меня как-то не прижился. Наверное оптимизация запросов к бд, дает более существенный выигрыш, чем пытаться оптимизировать сами странички.</p>
<h3>Модули основанные на FirePHP</h3>
<p>Во время отладки темы для своего проекта &laquo;<a href="http://www.youplugins.com">Твои плагины</a>&laquo;, была острая необходимость постоянно отслеживать значение переменных не нарушая дизайна. Вот здесь и пригодился плагин от Ivan Weiler под  WordPress. Все просто:</p>
<ul>
<li><a href="http://inchoo.net/wordpress/wordpress-firephp-plugin/">Скачиваем плагин</a></li>
<li>Активизируем в панели администратора</li>
<li>Пишем в любом месте <span style="font-family:monospace;color: #000000; font-weight: bold;">&lt;?php</span> fb<span style="color: #009900;">&#40;</span><span style="color: #000088;">$var</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></li>
<li>Смотри значение в панели FirePHP</li>
</ul>
<p>Вообще то модулей написанных под различные продукты: </p>
<ul>
<li><a href="http://www.firephp.org/Wiki/Libraries/Agavi" class="wikilink">Agavi</a>
</li>
<li><a href="http://www.firephp.org/Wiki/Libraries/BIGACE" class="wikilink">BIGACE</a>
</li>
<li><a href="http://www.firephp.org/Wiki/Libraries/CakePHP" class="wikilink">CakePHP</a>
</li>
<li><a href="http://www.firephp.org/Wiki/Libraries/CodeIgniter" class="wikilink">CodeIgniter</a>
</li>
<li><a href="http://www.firephp.org/Wiki/Libraries/Drupal" class="wikilink">Drupal</a>
</li>
<li><a href="http://www.firephp.org/Wiki/Libraries/ExpressionEngine" class="wikilink">ExpressionEngine</a>
</li>
<li><a href="http://www.firephp.org/Wiki/Libraries/EZ" class="wikilink">eZ</a>
</li>
<li><a href="http://www.firephp.org/Wiki/Libraries/Joomla" class="wikilink">Joomla</a>
</li>
<li><a href="http://www.firephp.org/Wiki/Libraries/Kohana" class="wikilink">Kohana</a>
</li>
<li><a href="http://www.firephp.org/Wiki/Libraries/NetteFramework" class="wikilink">Nette Framework</a>
</li>
<li><a href="http://www.firephp.org/Wiki/Libraries/PEAR" class="wikilink">PEAR</a>
</li>
<li><a href="http://www.firephp.org/Wiki/Libraries/ProjectZero" class="wikilink">Project Zero</a>
</li>
<li><a href="http://www.firephp.org/Wiki/Libraries/Prado" class="wikilink">PRADO</a>
</li>
<li><a href="http://www.firephp.org/Wiki/Libraries/REDAXO" class="wikilink">REDAXO</a>
</li>
<li><a href="http://www.firephp.org/Wiki/Libraries/Seagull" class="wikilink">Seagull</a>
</li>
<li><a href="http://www.firephp.org/Wiki/Libraries/Smarty" class="wikilink">Smarty</a>
</li>
<li><a href="http://www.firephp.org/Wiki/Libraries/Solar" class="wikilink">Solar</a>
</li>
<li><a href="http://www.firephp.org/Wiki/Libraries/Symfony" class="wikilink">Symfony</a>
</li>
<li><a href="http://www.firephp.org/Wiki/Libraries/TYPO3" class="wikilink">TYPO3</a>
</li>
<li><a href="http://www.firephp.org/Wiki/Libraries/WordPress" class="selflink">WordPress</a>
</li>
<li><a href="http://www.firephp.org/Wiki/Libraries/ZendFramework" class="wikilink">Zend Framework</a>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ajaxblog.ru/2009/05/rasshireniya-i-moduli-dlya-firebug/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Скрещиваем Twitter и WordPress</title>
		<link>http://ajaxblog.ru/2009/05/ckreshivaem-twitter-i-wordpress/</link>
		<comments>http://ajaxblog.ru/2009/05/ckreshivaem-twitter-i-wordpress/#comments</comments>
		<pubDate>Sat, 23 May 2009 11:08:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Мои проекты]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Находки]]></category>
		<category><![CDATA[Плагины]]></category>

		<guid isPermaLink="false">http://ajaxblog.ru/?p=209</guid>
		<description><![CDATA[Для своего проекта Твои Плагины мне нужно было сделать трансляцию новых добавленных плагинов в фид твиттера. Озадачившись задачей, начал искать решения. И так&#8230; Глобальный подход Есть официальная документация которая позволяет нам использовать предоставленный API интерфейс для работы с твиккером. Мне &#8230; <a href="http://ajaxblog.ru/2009/05/ckreshivaem-twitter-i-wordpress/">Далее, еще интереснее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Для своего проекта <a href="http://www.plugins.com">Твои Плагины</a> мне нужно было сделать трансляцию новых добавленных плагинов в фид твиттера. Озадачившись задачей, начал искать решения. И так&#8230;<br />
<span id="more-209"></span></p>
<h3>Глобальный подход</h3>
<p>Есть <a href="http://apiwiki.twitter.com/">официальная документация</a> которая позволяет нам использовать предоставленный API интерфейс для работы с твиккером. Мне было лень разбираться с ним и я начал искать далее.</p>
<h3>Готовые плагины для WordPress</h3>
<ul>
<li><a href="http://www.sleepydisco.co.uk/plugins/simpletwitter/">SimpleTwitter</a> &#8211; плагин который позволяет добовлять ваши посты в твиттер, достаточно много настроек.</li>
<li><a href="http://blog.victoriac.net/?p=87">The Twitter Updater</a> &#8211; другой плагин который автоматически отправляет сообщения в twitter, при редактирование записи, обновлении ее или публикации, настраивайте плагин, как сами считаете нужным.</li>
<li><a href="http://alexking.org/projects/wordpress/readme?project=twitter-tools">Twitter Tools</a> &#8211; позволяет как постить в твитер, так и в блог постить свои твитты.</li>
</ul>
<p>Вот наверное самые интересные плагины. Только как-то они у меня не пошли, то ли я что-то не так настроил, то ли еще что-то, но результат один. Мои опубликованные посты не добавлялись в мой твиттер.</p>
<h3>Сервисы для работы с твиттером</h3>
<p>Пока из известных &#8211; <a href="http://twitterfeed.com/">TwitterFeed</a>. Инструкция по применению очень проста.</p>
<p>Если есть OpenId &#8211; отлично. Если нет &#8211; заводим, (например: здесь <a href="http://myopenid.com">myopenid</a>, или здесь <a href="http://openid.yandex.ru/">Yandex OpenID</a>)</p>
<p>Логинемся в TwitterFeed под вашим OpenID<br />
<img src="/wp-content/uploads/twitterfeed/twitterfeed-1.png" alt="" /></p>
<p>Создаем новый профиль<br />
<img src="/wp-content/uploads/twitterfeed/twitterfeed-2.png" alt="" /></p>
<p>Заполняем форму<br />
<img src="/wp-content/uploads/twitterfeed/twitterfeed-3.png" alt="" /></p>
<ol>
<li>Вводим адрес вашего RSS</li>
<li>Устанавливаем частота обновления вашего твикера (по умолчанию: каждый час)</li>
<li>Сколько добавлять новых постов в твикер  (по умолчанию: 1, максимальное количество 5)</li>
<li>Что выводит в твитер (по умолчанию: заголовок и описание)</li>
<li>Каким сервисом коротких ссылок мы будем пользоваться, а мы будем пользоваться так как длина сообщения для твикера ограничена 140 символами (если вы хотите без регистрации &#8211; то urlShot, если не поленитесь и зарегистрируетесь то &#8211; bit.ly. Помимо того что этот сервис сокращает ссылки, он ведет статистику кликов по ним.)</li>
<li>Публикация новых постов на основание их (по умолчанию: на дате).</li>
<li>Сообщение выводимое перед публикацией поста в твикер (по умолчанию: пусто). Не совсем нужная опция, у нас и так ограничено, так тратить дорогие знакосимволы на прикрепляемое сообщение &#8211; разорительно.</li>
<li>Если галочка стоить то идет публикация в ваш твикер. Если ее убрать то времено будет остановлен процесс публикации до тех пор пока вы ее снова не установите.</li>
<li>Думаю кнопочку &laquo;Create&raquo; вы сами найдете <img src='http://ajaxblog.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ol>
<p>Сервис работал &laquo;на ура&raquo;, но под мои требования он не подошел, так-как максимальное количество публикуемых сообщений 5, а у меня может добовлятьса ежедневно более 10 новых плагинов.</p>
<h3>Своими руками</h3>
<p>Хочешь что-бы получилось как надо. сделай сам. Берем готовый <a href="http://woork.blogspot.com/2007/10/twitter-send-message-from-php-page.html">PHP класс</a> для работы с твикером. И на базе него пишем свой плагин для WordPress.</p>
<p>Не на какую универсальность он не претендует, задача его максимально проста. При публикование поста, он автоматически публикуется в вашем твикере. Я буду рад, если кто-то на основе его напишет полноценный плагин.</p>
<pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #666666; font-style: italic;">/*
Plugin Name: Twitter post
Plugin URI: http://www.youplugins.com/
Description: Updates Twitter when you create a new blog or publish one
Version: 1.00.0
Author: Denis Doroshenko
*/</span>

<span style="color: #000000; font-weight: bold;">function</span> wp_twitter_post_shotlink<span style="color: #009900;">(</span><span style="color: #000088;">$link</span><span style="color: #009900;">)</span>  <span style="color: #009900;">{</span>
	<span style="color: #000088;">$shotlink</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">""</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">"http://api.bit.ly/shorten?version=2.0.1&amp;longUrl=<span style="color: #006699; font-weight: bold;">{$link}</span>&amp;login=******&amp;apiKey=******"</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$bit</span> <span style="color: #339933;">=</span> <span style="color: #990000;">json_decode</span><span style="color: #009900;">(</span><span style="color: #990000;">file_get_contents</span><span style="color: #009900;">(</span><span style="color: #000088;">$url</span><span style="color: #009900;">)</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span><span style="color: #000088;">$bit</span><span style="color: #009900;">[</span><span style="color: #0000ff;">"errorCode"</span><span style="color: #009900;">]</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span>
		<span style="color: #000088;">$shotlink</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$bit</span><span style="color: #009900;">[</span><span style="color: #0000ff;">"results"</span><span style="color: #009900;">]</span><span style="color: #009900;">[</span><span style="color: #0000ff;">"<span style="color: #006699; font-weight: bold;">{$link}</span>"</span><span style="color: #009900;">]</span><span style="color: #009900;">[</span><span style="color: #0000ff;">"shortUrl"</span><span style="color: #009900;">]</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">}</span>
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$shotlink</span><span style="color: #339933;">;</span>
<span style="color: #009900;">}</span>

<span style="color: #000000; font-weight: bold;">function</span> wp_twitter_post_add<span style="color: #009900;">(</span><span style="color: #000088;">$post_ID</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span>
    <span style="color: #b1b100;">include</span><span style="color: #009900;">(</span><span style="color: #990000;">dirname</span><span style="color: #009900;">(</span><span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #009900;">)</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'/twitterAPI.php'</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>

	<span style="color: #000088;">$post</span> 			<span style="color: #339933;">=</span> get_post<span style="color: #009900;">(</span><span style="color: #000088;">$post_ID</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$postTitle</span> 		<span style="color: #339933;">=</span> <span style="color: #000088;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">post_title</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$postLink</span> 		<span style="color: #339933;">=</span> get_permalink<span style="color: #009900;">(</span><span style="color: #000088;">$post_ID</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$postContent</span> 	        <span style="color: #339933;">=</span> <span style="color: #000088;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">post_content</span><span style="color: #339933;">;</span>

	<span style="color: #000088;">$twitter_username</span> 	<span style="color: #339933;">=</span> <span style="color: #0000ff;">'******'</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$twitter_psw</span> 		<span style="color: #339933;">=</span> <span style="color: #0000ff;">'******'</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$twitter_message</span>	<span style="color: #339933;">=</span> <span style="color: #0000ff;">"<span style="color: #006699; font-weight: bold;">{$postTitle}</span>: <span style="color: #006699; font-weight: bold;">{$postContent}</span>"</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$count</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mb_strlen</span><span style="color: #009900;">(</span><span style="color: #000088;">$twitter_message</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span><span style="color: #000088;">$count</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span>
		<span style="color: #000088;">$twitter_message</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">""</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">}</span> <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">(</span><span style="color: #000088;">$count</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">115</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span>
		<span style="color: #000088;">$twitter_message</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mb_substr</span><span style="color: #009900;">(</span><span style="color: #000088;">$twitter_message</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">115</span><span style="color: #009900;">)</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'..'</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">}</span>
	<span style="color: #000088;">$twitter_message</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">' '</span><span style="color: #339933;">.</span>wp_twitter_post_shotlink<span style="color: #009900;">(</span><span style="color: #000088;">$postLink</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$twitter_status</span> <span style="color: #339933;">=</span> postToTwitter<span style="color: #009900;">(</span><span style="color: #000088;">$twitter_username</span><span style="color: #339933;">,</span> <span style="color: #000088;">$twitter_psw</span><span style="color: #339933;">,</span> <span style="color: #000088;">$twitter_message</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$post_ID</span><span style="color: #339933;">;</span>
<span style="color: #009900;">}</span>

add_action<span style="color: #009900;">(</span><span style="color: #0000ff;">'publish_post'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'wp_twitter_post_add'</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>

<span style="color: #000000; font-weight: bold;">?&gt;</span></pre>
<p>add_action(&#8216;publish_post&#8217;, &#8216;wp_twitter_post_add&#8217;) &#8211; вызываем функцию wp_twitter_post_add, после события publish_post<br />
wp_twitter_post_add() &#8211; функция которая производит публикацию поста в ваш твикер, для этого вам нужно знать логин и пароль вашего твикера.<br />
wp_twitter_post_shotlink($link) &#8211; функция преобразования ваших урлов в их укороченный вариант, я для этого использовал сервис bit.ly, для его правильной работы вы должны быть на нем зарегистрированы. После регистрации сервис для вас с генерирует apiKey, который и нужно будет подставить в эту функцию.</p>
<h3>Ссылки по данной тематике</h3>
<ul>
<li><a href="http://www.quickonlinetips.com/archives/2007/04/10-best-twitter-tools-for-wordpress-blogs/">http://www.quickonlinetips.com/archives/2007/04/10-best-twitter-tools-for-wordpress-blogs/</a></li>
<li><a href="http://blogproblog.com/twitter-dlya-wordpress-bloga/">http://blogproblog.com/twitter-dlya-wordpress-bloga/</a></li>
<li><a href="http://blog.dimok.ru/blog-i-twitter">http://blog.dimok.ru/blog-i-twitter<br />
</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ajaxblog.ru/2009/05/ckreshivaem-twitter-i-wordpress/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Каталог js плагинов</title>
		<link>http://ajaxblog.ru/2009/05/youplugins/</link>
		<comments>http://ajaxblog.ru/2009/05/youplugins/#comments</comments>
		<pubDate>Fri, 22 May 2009 10:10:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мои проекты]]></category>

		<guid isPermaLink="false">http://ajaxblog.ru/?p=201</guid>
		<description><![CDATA[Я очень люблю фреймворк jQuery, одна из причин &#8211; для него написано очень много качественных плагинов, практически на все случае жизни. что сильно экономит время разработки своих проектов. С вязи с чем часто приходиться искать в Интернете тот или иной &#8230; <a href="http://ajaxblog.ru/2009/05/youplugins/">Далее, еще интереснее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Я очень люблю фреймворк jQuery, одна из причин &#8211; для него написано очень много качественных плагинов, практически на все случае жизни. что сильно экономит время разработки своих проектов.</p>
<p>С вязи с чем часто приходиться искать в Интернете тот или иной плагин для своих нужд. Иногда бывает что:<br />
- сразу не находишь то что хотелось бы,<br />
- или вроде кажется нашёл, но оказывается есть более функциональный аналог от других разработчиков,<br />
- нашёл но не то что искал и думаешь &laquo;классный плагин&raquo; он мне потом обязательно пригодиться давай я залажу закладку, а потом накапливается такой ворох закладок, что легче заново начать искать</p>
<p>Вот так созрела идея создать <a href="http://www.youplugins.com">свой каталог плагинов</a> для известных js фреймворков (jQuery, MooTools, Prototype  и других).</p>
<p>Идея есть, переходим к реализации.<br />
<span id="more-201"></span></p>
<h3>Анализ</h3>
<p>Каталоги похожей тематики:</p>
<ul>
<li><a href="http://plugins.jquery.com/">plugins.jquery.com</a> &#8211; каталог js плагинов для jquery<br />
+ наверное самое полное собрание плагинов для jquery.<br />
+ очень &laquo;раскрученный&raquo; ресурс<br />
+ есть каталог<br />
+ есть поиск<br />
- нет скриншота плагина<br />
- нет системы рейтинга плагина (на самом деле вроде есть,, но только на странички конкретного плагина)<br />
- нет облака тэгов<br />
- нет топа популярных плагинов</li>
<li><a href="http://www.ajaxrain.com/">AjaxRain</a> &#8211; презентуют себя как каталог всех плагинов, не только для js фреймворков (например: там есть плагины для Firefox)<br />
+ достаточное большое собрание плагинов<br />
+ есть система рейтинга<br />
+ есть скриншот плагина<br />
+ плагины можно комментировать<br />
+ можно добавить в избранное<br />
+ есть каталог плагинов<br />
+ есть сортировка по кол-ву комментариев, по популярности, по дате добовления<br />
+ есть поиск<br />
- очевидных недостатков нет, просто мне бы хотелось увидеть более удобный клиентский интерфейс</li>
<li><a href="http://jquerystyle.com/plugins/">jQuery Style</a> &#8211; стильный сайт поклонника jQuery<br />
+ есть социальные закладки<br />
+ можно добавить понравившийся плагин в твиттер<br />
+ есть тэги<br />
+ есть список сайтов, рассказывающих как создавать плагины<br />
- в принципе дальше идут одни недостатки, приводит небуду, достаточно сравнить с предыдущим ресурсом</li>
</ul>
<h3>Делаем</h3>
<p>Итак я хочу получить:</p>
<ol>
<li>каталог с легким дизайном</li>
<li>с возможность поиска по рубрикатору и тэгам</li>
<li>с возможность рейтинга плагинов</li>
<li>добавлять в избранное или социальные закладки</li>
<li>возможностью комментировать</li>
<li>не ограничить каталог, только js плагинами</li>
</ol>
<p>Что сделано пока&#8230;</p>
<p>Есть сайт действующий сайт &#8211; <a href="http://www.youplugins.com">www.youplugins.com</a></p>
<p><a href="http://www.youplugins.com"><img src="/wp-content/uploads/project/youplugins/youplugins-1.png"></a><br />
Показ новых плагинов &#8211; на основе карусели</p>
<p><a href="http://www.youplugins.com"><img src="/wp-content/uploads/project/youplugins/youplugins-2.png"></a><br />
Топ популяных плагинов &#8211; с эффектом скольжения.</p>
<p><a href="http://www.youplugins.com"><img src="/wp-content/uploads/project/youplugins/youplugins-3.png"></a><br />
Я хотел собрать здесь дополнительный материал по js фреймворкам</p>
<p>Сделано пока WordPress`е &#8211; для того что-бы понять насколько это востребовано и нужно.  проект будет постоянно развиваться. Мне очень нужны ваши отзывы, что вы хотели бы добавить, улучшить или убрать. </p>
<p><b>Я хочу сделать каталог который был бы удобен не только мне, но и Вам.</b></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxblog.ru/2009/05/youplugins/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Krumo &#8211; средство для отладки php кода</title>
		<link>http://ajaxblog.ru/2008/10/krumo-sredstvo-dlya-otladki-php-koda/</link>
		<comments>http://ajaxblog.ru/2008/10/krumo-sredstvo-dlya-otladki-php-koda/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 07:52:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Инструмент разработчика]]></category>

		<guid isPermaLink="false">http://ajaxblog.ru/?p=184</guid>
		<description><![CDATA[Чем хорошо этот Kumo, он позволяет отказаться от ставших привычных операций echo, print_r(), var_dump(). В замен использовать krumo(). Библиотека достаточно интеллектуальна, чтобы понять какой тип переменой вы передали (String, Array, Object, Clasи т.д.) и сама проводит соответствующие преобразование в нужный &#8230; <a href="http://ajaxblog.ru/2008/10/krumo-sredstvo-dlya-otladki-php-koda/">Далее, еще интереснее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img style="float: left; margin: 0px 10px 10px 0px" title="krumo" src="http://ajaxblog.ru/wp-content/uploads/2008/10/krumo.gif" alt="" width="288" height="97" /></p>
<p>Чем хорошо этот <a href="http://kaloyan.info/krumo/#top">Kumo</a>, он позволяет отказаться от ставших привычных операций echo, print_r(), var_dump(). В замен использовать krumo(). Библиотека достаточно интеллектуальна, чтобы понять какой тип переменой вы передали (String, Array, Object, Clasи т.д.) и сама проводит соответствующие преобразование в нужный html код для выдачи в отформатированном виде в ваш браузер.<br />
<span id="more-184"></span><br />
Как работает:</p>
<ul>
<li>Скачиваем: на <a href="http://sourceforge.net/project/showfiles.php?group_id=194198">официальном сайте</a> или <a href="http://ajaxblog.ru/article/2008/10/krumo.rar">у меня</a>. В последнем случае вы получите немного модифицированную библиотеку.
<ul>
<li>Добавил подержу оператора <strong>__()</strong>. Теперь можно вывести переменные как с помощью оператора krumo(), так и __().</li>
<li>Убрал в отладочном выводе  следующию строчку, <strong>Krumo version 0.2.1a | http://krumo.sourceforge.net/</strong>. Да простят меня разработчики, но я думаю где взять и какая версия вас мало будет интересовать во время отладки кода.</li>
</ul>
</li>
<li>Подключаем
<pre class="prettyprint">include "class.krumo.php";</pre>
</li>
<li>Используем
<pre class="prettyprint">krumo($var);
или так
__($var);</pre>
</li>
<li>Дополнительные настройки
<pre class="prettyprint">// показ debug backgrace
 krumo::backtrace();
 // показ всех подключенных классов
 krumo::includes();
 // показ всех функций
 krumo::functions();
 // показ всех декларированных классов
 krumo::classes();
 // показ всех объявленных констант
 krumo::defines();
 // запретить вывод отладочных сообщений всего что ниже
 krumo::disable();
 // Этот вывод показан не будет
 krumo::includes();
 // Разрешить отладочный вывод
 krumo::enable();
 // Этот вывод будет показан
 krumo::classes();</pre>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ajaxblog.ru/2008/10/krumo-sredstvo-dlya-otladki-php-koda/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pencil – зарисовки и наброски прототипов интерфейсов с помощью Firefox</title>
		<link>http://ajaxblog.ru/2008/10/pencil-zarisovki-i-nabroski-prototipov-interfejjsov-s-pomoshhyu-firefox/</link>
		<comments>http://ajaxblog.ru/2008/10/pencil-zarisovki-i-nabroski-prototipov-interfejjsov-s-pomoshhyu-firefox/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 18:41:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Инструмент разработчика]]></category>
		<category><![CDATA[Находки]]></category>
		<category><![CDATA[Плагины]]></category>

		<guid isPermaLink="false">http://ajaxblog.ru/?p=172</guid>
		<description><![CDATA[Для одного заказа, мне нужно было очень быстро отослать прототип будущей вэб страницы клиенту. Она была перегружена формами, и нужно было согласовать их расположение с заказчиком. К сожалению под рукой не оказалось сканера и поэтому я решил сделать прототип системы &#8230; <a href="http://ajaxblog.ru/2008/10/pencil-zarisovki-i-nabroski-prototipov-interfejjsov-s-pomoshhyu-firefox/">Далее, еще интереснее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Для одного заказа, мне нужно было очень быстро отослать прототип будущей вэб страницы клиенту. Она была перегружена формами, и нужно было согласовать их расположение с заказчиком.</p>
<p>К сожалению под рукой не оказалось сканера и поэтому я решил сделать прототип системы в фотошопе. После второй кнопки, я понял что не успею. Поэтому решил поискать в Интернете, что-то, что позволило решить мою задачу.</p>
<p>Вот что я нашёл – <a href="http://www.evolus.vn/Pencil/Home.html">Pencil</a>.</p>
<p><span id="more-172"></span> Доступ ко всем свойствам формы</p>
<ul>
<li>
<div><img src="http://ajaxblog.ru/wp-content/uploads/2008/10/property-dialog.jpg" alt="" width="270" height="167" /></div>
</li>
<li>Создание прототипа GUI для настольных приложений Windows.
<div><img src="http://ajaxblog.ru/wp-content/uploads/2008/10/complex-gui-design.jpg" alt="" width="270" height="167" /></div>
</li>
<li>Страница Свойства диалог с возможностью выбрать другую страницу в качестве фонового.
<div><img src="http://ajaxblog.ru/wp-content/uploads/2008/10/page-properties.jpg" alt="" width="270" height="167" /></div>
</li>
<li>Текст на экране поддерживает возможность редактирование, как простого текста так и форматированного.
<div><img src="http://ajaxblog.ru/wp-content/uploads/2008/10/onscreen-text-editing.jpg" alt="" width="270" height="167" /></div>
</li>
<li>Pencil поддерживает возможность конвертировать ваш проект в PNG.
<div><img src="http://ajaxblog.ru/wp-content/uploads/2008/10/export-pngs.jpg" alt="" width="270" height="167" /></div>
</li>
</ul>
<p>Самая приятная фича этого проекта, в том, что он сделан как плагин к Firefox. Мой любимый Firefox – уже перестает быть просто браузером, а становится средой для разработки приложений.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxblog.ru/2008/10/pencil-zarisovki-i-nabroski-prototipov-interfejjsov-s-pomoshhyu-firefox/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Select Box Factory – очумелый плагин для jQuery.</title>
		<link>http://ajaxblog.ru/2008/10/select-box-factory-%e2%80%93-ochumelyjj-plagin-dlya-jquery/</link>
		<comments>http://ajaxblog.ru/2008/10/select-box-factory-%e2%80%93-ochumelyjj-plagin-dlya-jquery/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 09:47:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Плагины]]></category>

		<guid isPermaLink="false">http://ajaxblog.ru/?p=149</guid>
		<description><![CDATA[Я являюсь тайным фанатом библиотеки для javascript – jQuery. Это библиотека предоставляет для разработчика фантастические возможности для реализации задуманного им функционала. jQuery, по своей концепции напоминает Firefox. Сама по себе, как и «голый» Firefox (без плагинов) вряд ли завоевал такую &#8230; <a href="http://ajaxblog.ru/2008/10/select-box-factory-%e2%80%93-ochumelyjj-plagin-dlya-jquery/">Далее, еще интереснее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Я являюсь тайным фанатом библиотеки для javascript – jQuery. Это библиотека предоставляет для разработчика фантастические возможности для реализации задуманного им функционала.</p>
<p>jQuery, по своей концепции напоминает Firefox. Сама по себе, как и «голый» Firefox (без плагинов) вряд ли завоевал такую популярность и любовь. Все дело в дружественной среде заложенной в библиотеке. Которая позволяет легко писать расширения в виде плагинов. Начиная от официальных плагинов jQuery UI, и заканчивая сторонними.</p>
<p>Вот об одном из них я и расскажу. <a href="http://www.headcircus.com/uiguy/selectboxfactory/selectboxfactory.html">Select Box Factory</a> –поистине очумелый плагин для создание списков с выбором.</p>
<p><img src="http://ajaxblog.ru/wp-content/uploads/2008/10/select-1.png" alt="" width="370" height="200" /></p>
<p><span id="more-149"></span></p>
<p>Что он умеет:</p>
<ul>
<li> строить списки на основе уже существующей DOM – структуры
<pre class="prettyprint">var dropdown = new sFac({
	id : "fromMemory",
	container : "dropdownContainer"
});	

&lt;div id="dropdownContainer"&gt;
	&lt;div id="lynx" title="lynx" defaultSelection="false" state="0" data="claws,stripes"&gt; Lynx &lt;/div&gt;
	&lt;div id="cheetah" title="cheetah" defaultSelection="false" state="0" data="eyes,claws"&gt;Cheetah&lt;/div&gt;
	&lt;div id="bobcat" title="bobcat" defaultSelection="false" state="0" data="eyes,nose"&gt;Bobcat&lt;/div&gt;
&lt;/div&gt;</pre>
</li>
<li>Получать самому списочный массив с сервера с помощью JSON или прописать его в коде
<pre class="prettyprint">var dropdown = new sFac({
	id : "fromTheServerSide",
	container : "dropdownContainer",
	choices :
		[
			['leopard','leopard','Leopard',false,0,["spots"," ears"]],
			['tiger','tiger','Tiger',false,0,[" tail","nose"]],
			['serval','serval','Serval',true,0,["tail","nose"]],
		]
});</pre>
</li>
<li>Списки поддерживают следующие свойства:  dropdown, показать один только список без шапки, мультивыбор значений списка, изменений размеров списков (resize)<br />
<img class="alignnone size-full wp-image-150" title="select-2" src="http://ajaxblog.ru/wp-content/uploads/2008/10/select-2.png" alt="" width="500" height="190" /></li>
<li>Плагин поддерживает фильтрование значений списка и создание списков из картинок<br />
<img class="alignnone size-full wp-image-152" title="select-3" src="http://ajaxblog.ru/wp-content/uploads/2008/10/select-3.png" alt="" width="370" height="200" /></li>
<li>Создание списков с подкрашенными значениями, с последующей возможностью применить к ним фильтр<br />
<img class="alignnone size-full wp-image-154" title="select-41" src="http://ajaxblog.ru/wp-content/uploads/2008/10/select-41.png" alt="" width="342" height="200" /></li>
<li>Поддержка скинов для списков<br />
<img class="alignnone size-full wp-image-155" title="select-5" src="http://ajaxblog.ru/wp-content/uploads/2008/10/select-5.png" alt="" width="342" height="188" /></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ajaxblog.ru/2008/10/select-box-factory-%e2%80%93-ochumelyjj-plagin-dlya-jquery/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
