<?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 &#187; Мои проекты</title>
	<atom:link href="http://ajaxblog.ru/category/moi-proekty/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>Скрещиваем 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>Всплывающей подсказки или tooltip</title>
		<link>http://ajaxblog.ru/2008/06/vsplyvayushhejj-podskazki-ili-tooltip/</link>
		<comments>http://ajaxblog.ru/2008/06/vsplyvayushhejj-podskazki-ili-tooltip/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 08:29:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Мои проекты]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Плагины]]></category>

		<guid isPermaLink="false">http://ajaxblog.ru/?p=50</guid>
		<description><![CDATA[В Интернете наблюдается определенная модная тенденция к использованию на сайте всевозможных всплывающих подсказок (tooltip). Оно и понятно, информации становиться все больше и хочется ее все разместить на странице, а существующий дизайн не позволяет это сделать. Хорошим выходом является использование всплывающих &#8230; <a href="http://ajaxblog.ru/2008/06/vsplyvayushhejj-podskazki-ili-tooltip/">Далее, еще интереснее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>В Интернете наблюдается определенная модная тенденция к использованию на сайте всевозможных всплывающих подсказок (tooltip).</p>
<p>Оно и понятно, информации становиться все больше и хочется ее все разместить на странице, а существующий дизайн не позволяет это сделать. Хорошим выходом является использование всплывающих подсказок.</p>
<p>Я давно уже хотел на своем сайте задействовать их. И вот смотрим&#8230;</p>
<p><img class="alignleft size-full wp-image-51" title="tooltip" src="http://ajaxblog.ru/wp-content/uploads/2008/06/tooltip.png" alt="" width="470" height="271" /></p>
<p><span id="more-50"></span></p>
<p>Идея подсказки, взята с одного известного сайта.<br />
Скрипт полностью написан с нуля, так-так их вариант не устраивал по ряду причин.<br />
Скрипт пока еще &laquo;сырой&raquo;, но если появиться интерес то доведу его до кондиции плагина к WordPress`у</p>
<p>Здесь можно посмотреть <a href="http://ajaxblog.ru/article/2008/06/tooltip/index.html">демо</a> работу скрипт, а здесь <a href="http://ajaxblog.ru/article/2008/06/tooltip.rar">скачать</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxblog.ru/2008/06/vsplyvayushhejj-podskazki-ili-tooltip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
