<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Registering group of JS files in Yii</title>
	<atom:link href="http://programmersnotes.info/2009/03/03/registering-group-of-js-files-in-yii/feed/" rel="self" type="application/rss+xml" />
	<link>http://programmersnotes.info/2009/03/03/registering-group-of-js-files-in-yii/</link>
	<description>Notes on the web-development and artificial intelligence.</description>
	<lastBuildDate>Fri, 20 Apr 2012 15:40:43 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
	<item>
		<title>By: jz</title>
		<link>http://programmersnotes.info/2009/03/03/registering-group-of-js-files-in-yii/comment-page-1/#comment-73</link>
		<dc:creator>jz</dc:creator>
		<pubDate>Tue, 26 May 2009 23:56:29 +0000</pubDate>
		<guid isPermaLink="false">http://programmersnotes.info/?p=123#comment-73</guid>
		<description>1) Да, мне нужна была примерно та же функциональность. С той разницей, что в своём проекте я не использовал assets и группировку файлов по директориям. Моя цель была упростить кодирование при подключении группы файлов и собрать все конфиги в одном месте (DRY), чтобы легче было переходить с development версии на production (для этого достаточно в конфиге выдавать разные группы файлов в зависимости от константы YII_DEBUG, например).

2) Mixed groups — придуманный мной термин, не более того. Это удобно, если подключаемый скрипт тянет за собой css или зависит от какой-нибудь библиотеки. Ничего экстраординарного, просто в конфигах задаются правила под каждую группу файлов. Словами это дольше объяснять, чем кодом, так что вот пример конфигурации из protected/config/main.php:

[code lang=&quot;php&quot;]

&#039;clientScript&#039; =&gt; array(
  // … come ClientScript settings …
  &#039;behaviors&#039; =&gt; array(
    &#039;scriptGroupBehavior&#039; =&gt; array(
      &#039;class&#039; =&gt; &#039;application.extensions.CScriptGroupBehavior&#039;,
          &#039;scriptGroups&#039; =&gt; array(
            &#039;login&#039; =&gt; array(&#039;/js/forms.js&#039;, &#039;/js/login.js&#039;),
          ),
          &#039;mixedGroups&#039; =&gt; array(
            &#039;base&#039; =&gt; array(
              &#039;core&#039; =&gt; &#039;jquery&#039;,
              &#039;css&#039; =&gt; array(&#039;/css/reset.css&#039;, &#039;/css/style.css&#039;),
              &#039;script&#039; =&gt; &#039;/js/all.js&#039;
            ),
            &#039;admin&#039; =&gt; array(
              &#039;core&#039; =&gt; &#039;jquery&#039;,
              &#039;css&#039; =&gt; array(&#039;/css/reset.css&#039;, &#039;/css/admin.css&#039;, &#039;/css/rte.css&#039;),
              &#039;script&#039; =&gt; array(&#039;/js/rte.js&#039;, &#039;/js/admin.js&#039;),
            ),
),),),),),),

[/code]

Соответственно, CScriptGroupBehavior расширяет класс CBehavior и содержит методы registerCoreGroup, registerScriptGroup, registerCssGroup, registerCoreGroup. После этого можно пользоваться как вызовами вида Yii::app()-&gt;clientScript-&gt;registerCssFile(…), так и Yii::app()-&gt;clientScript-&gt;registerCssGroup(…).

3) До написания разрешения зависимостей между группами дело не дошло: не понадобилось. Но это сделать довольно просто, надо только немного подумать над упрощением конфигурации и производительностью.

А может быть, стоит спросить у Qiang, что он думает о вынесении настройки core libraries в конфиги CClientScript. Тогда все эти ухищрения с подключением групп файлов станут не нужны: можно будет просто регистрировать свои core-группы.

Если вам интересен код CScriptGroupBehavior (хоть он и тривиален в моём исполнении), то я могу выложить его в расширениях Yii или выслать по e-mail. Посылать его в комментах не буду просто потому, что и так длинные пишу :)

P.S. Кстати, было бы неплохо добавить в этот программерский блог поддержку комментариев с тегом &quot;code&quot; и прикрутить плагин (например, highlight) для их подсветки.</description>
		<content:encoded><![CDATA[<p>1) Да, мне нужна была примерно та же функциональность. С той разницей, что в своём проекте я не использовал assets и группировку файлов по директориям. Моя цель была упростить кодирование при подключении группы файлов и собрать все конфиги в одном месте (DRY), чтобы легче было переходить с development версии на production (для этого достаточно в конфиге выдавать разные группы файлов в зависимости от константы YII_DEBUG, например).</p>
<p>2) Mixed groups — придуманный мной термин, не более того. Это удобно, если подключаемый скрипт тянет за собой css или зависит от какой-нибудь библиотеки. Ничего экстраординарного, просто в конфигах задаются правила под каждую группу файлов. Словами это дольше объяснять, чем кодом, так что вот пример конфигурации из protected/config/main.php:</p>
<p>[code lang="php"]</p>
<p>'clientScript' => array(<br />
  // … come ClientScript settings …<br />
  'behaviors' => array(<br />
    'scriptGroupBehavior' =&gt; array(<br />
      'class' => 'application.extensions.CScriptGroupBehavior',<br />
          'scriptGroups' =&gt; array(<br />
            'login' => array('/js/forms.js', '/js/login.js'),<br />
          ),<br />
          'mixedGroups' => array(<br />
            'base' => array(<br />
              'core' => 'jquery',<br />
              'css' => array('/css/reset.css', '/css/style.css'),<br />
              'script' => '/js/all.js'<br />
            ),<br />
            'admin' => array(<br />
              'core' => 'jquery',<br />
              'css' => array('/css/reset.css', '/css/admin.css', '/css/rte.css'),<br />
              'script' => array('/js/rte.js', '/js/admin.js'),<br />
            ),<br />
),),),),),),</p>
<p>[/code]</p>
<p>Соответственно, CScriptGroupBehavior расширяет класс CBehavior и содержит методы registerCoreGroup, registerScriptGroup, registerCssGroup, registerCoreGroup. После этого можно пользоваться как вызовами вида Yii::app()-&gt;clientScript-&gt;registerCssFile(…), так и Yii::app()-&gt;clientScript-&gt;registerCssGroup(…).</p>
<p>3) До написания разрешения зависимостей между группами дело не дошло: не понадобилось. Но это сделать довольно просто, надо только немного подумать над упрощением конфигурации и производительностью.</p>
<p>А может быть, стоит спросить у Qiang, что он думает о вынесении настройки core libraries в конфиги CClientScript. Тогда все эти ухищрения с подключением групп файлов станут не нужны: можно будет просто регистрировать свои core-группы.</p>
<p>Если вам интересен код CScriptGroupBehavior (хоть он и тривиален в моём исполнении), то я могу выложить его в расширениях Yii или выслать по e-mail. Посылать его в комментах не буду просто потому, что и так длинные пишу <img src='http://programmersnotes.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>P.S. Кстати, было бы неплохо добавить в этот программерский блог поддержку комментариев с тегом &#8220;code&#8221; и прикрутить плагин (например, highlight) для их подсветки.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Konstantin Mirin</title>
		<link>http://programmersnotes.info/2009/03/03/registering-group-of-js-files-in-yii/comment-page-1/#comment-72</link>
		<dc:creator>Konstantin Mirin</dc:creator>
		<pubDate>Tue, 26 May 2009 05:37:18 +0000</pubDate>
		<guid isPermaLink="false">http://programmersnotes.info/?p=123#comment-72</guid>
		<description>Nice comment :) A few questions:
1) I guess you were talking about the same functionality I presented here? How did you implement this as behaviour?
2) What are mixed groups? Any more info? Sounds quite interesting :)
3) Dependencies management - like it&#039;s done for the core libraries? Cool. Could you describe this in more details?</description>
		<content:encoded><![CDATA[<p>Nice comment <img src='http://programmersnotes.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  A few questions:<br />
1) I guess you were talking about the same functionality I presented here? How did you implement this as behaviour?<br />
2) What are mixed groups? Any more info? Sounds quite interesting <img src='http://programmersnotes.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
3) Dependencies management &#8211; like it&#8217;s done for the core libraries? Cool. Could you describe this in more details?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jz</title>
		<link>http://programmersnotes.info/2009/03/03/registering-group-of-js-files-in-yii/comment-page-1/#comment-71</link>
		<dc:creator>jz</dc:creator>
		<pubDate>Tue, 26 May 2009 00:05:40 +0000</pubDate>
		<guid isPermaLink="false">http://programmersnotes.info/?p=123#comment-71</guid>
		<description>Спасибо за простое, но полезное расширение.

Я попробовал Yii Framework на небольшом рабочем проекте. Очень понравилось. Раньше был на CodeIgniter, но как-то последнее время его разработка мало движется, а при написании кода приходится делать много лишних действий. Поддержка в Yii концепций примешивания кода, behaviors, events — тоже обрадовало. Жалко, что потенциал этих паттернов пока ещё толком не раскрыт в расширениях.

Кстати, для этого сайта я писал подобный скрипт. Только у меня он был behavior. Больше для интереса, чем для пользы, но с CClientScriptMinify удалось использовать :) И ещё там есть поддержка mixed-групп, в которых перечислены CSS+JS+Core файлы. Была идея добавить туда ещё и управление зависимостями, но вовремя остановился: слишком маленькая задача, чтобы столько времени на неё тратить.

Что-то я расписался… Прошу прощения)
---------------------------------------
Translation by Konstantin:
Thanks for the simple, but helpful extension.

I tried Yii Framework on the little project. I liked it very much. I was using CodeIgniter before, but its development isn&#039;t very active recent time and it requires lots of extra things when writing the code. Mixing of the code in Yii (behaviours, events) - seems to be great, but unfortunately the potential of these patterns isn&#039;t revealed in full in the extensions.

By the way, for my project I wrote the similar script. But I implemented it as behaviour. More for interest, than for usefulness, I used CClientScriptMinify also :) There is also mixed-group support in it, where there are CSS+JS+Core files. I also had an idea to add dependencies management there, but stopped: too little project to spend so much time on it.

Seems I wrote too much... Sorry )</description>
		<content:encoded><![CDATA[<p>Спасибо за простое, но полезное расширение.</p>
<p>Я попробовал Yii Framework на небольшом рабочем проекте. Очень понравилось. Раньше был на CodeIgniter, но как-то последнее время его разработка мало движется, а при написании кода приходится делать много лишних действий. Поддержка в Yii концепций примешивания кода, behaviors, events — тоже обрадовало. Жалко, что потенциал этих паттернов пока ещё толком не раскрыт в расширениях.</p>
<p>Кстати, для этого сайта я писал подобный скрипт. Только у меня он был behavior. Больше для интереса, чем для пользы, но с CClientScriptMinify удалось использовать <img src='http://programmersnotes.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  И ещё там есть поддержка mixed-групп, в которых перечислены CSS+JS+Core файлы. Была идея добавить туда ещё и управление зависимостями, но вовремя остановился: слишком маленькая задача, чтобы столько времени на неё тратить.</p>
<p>Что-то я расписался… Прошу прощения)<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Translation by Konstantin:<br />
Thanks for the simple, but helpful extension.</p>
<p>I tried Yii Framework on the little project. I liked it very much. I was using CodeIgniter before, but its development isn&#8217;t very active recent time and it requires lots of extra things when writing the code. Mixing of the code in Yii (behaviours, events) &#8211; seems to be great, but unfortunately the potential of these patterns isn&#8217;t revealed in full in the extensions.</p>
<p>By the way, for my project I wrote the similar script. But I implemented it as behaviour. More for interest, than for usefulness, I used CClientScriptMinify also <img src='http://programmersnotes.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  There is also mixed-group support in it, where there are CSS+JS+Core files. I also had an idea to add dependencies management there, but stopped: too little project to spend so much time on it.</p>
<p>Seems I wrote too much&#8230; Sorry )</p>
]]></content:encoded>
	</item>
</channel>
</rss>

