Sourcecode Textareas

This module was designed to make it easier to cut-and-paste posted source code. It will automatically resize a textarea containing code snippets and attach the javascript focus() & select() to the onclick handler.

I spent some time learning my way around jQuery tonight. For my first exercise I wrote a module that will resize the text areas containing my posted code snippets. It seems to be working OK. A link to download the complete module is at the bottom of this page.

sourcecode_textareas.module

<span style="color: #369;">&lt;?php</span><span style="color: #000;">
</span><span style="color: #555;">/**
&nbsp;*&nbsp;Implementation&nbsp;of&nbsp;hook_menu
&nbsp;*&nbsp;
&nbsp;*&nbsp;Loads&nbsp;the&nbsp;javascript.
&nbsp;*/
</span><span style="color: #000;">
</span><span style="color: #00C;">function</span><span style="color: #000;">&nbsp;</span><span style="color: #000;">sourcecode_textareas_menu</span><span style="color: #000;">(</span><span style="color: #000;">$may_cache</span><span style="color: #000;">)&nbsp;{
&nbsp;&nbsp;</span><span style="color: #00C;">if</span><span style="color: #000;">&nbsp;(!</span><span style="color: #000;">$may_cache</span><span style="color: #000;">)&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000;">drupal_add_js</span><span style="color: #000;">(</span><span style="color: #000;">drupal_get_path</span><span style="color: #000;">(</span><span style="color: #F39;">'module'</span><span style="color: #000;">,&nbsp;</span><span style="color: #F39;">'sourcecode_textareas'</span><span style="color: #000;">)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.</span><span style="color: #F39;">'/sourcecode_textareas.js'</span><span style="color: #000;">);
&nbsp;&nbsp;}
}&nbsp;</span>

sourcecode_textareas.js

<span style="color: #00C;">if</span><span style="color: #000;">&nbsp;(</span><span style="color: #000;">Drupal</span><span style="color: #000;">.</span><span style="color: #000;">jsEnabled</span><span style="color: #000;">)&nbsp;{
&nbsp;&nbsp;</span><span style="color: #000;">$</span><span style="color: #000;">(</span><span style="color: #000;">document</span><span style="color: #000;">).</span><span style="color: #000;">ready</span><span style="color: #000;">(</span><span style="color: #00C;">function</span><span style="color: #000;">()&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000;">$</span><span style="color: #000;">(</span><span style="color: #F39;">"form.sourcecode&nbsp;&gt;&nbsp;textarea"</span><span style="color: #000;">).</span><span style="color: #000;">each</span><span style="color: #000;">(</span><span style="color: #00C;">function</span><span style="color: #000;">(</span><span style="color: #000;">el</span><span style="color: #000;">){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #00C;">var</span><span style="color: #000;">&nbsp;</span><span style="color: #000;">breaks</span><span style="color: #000;">&nbsp;=&nbsp;</span><span style="color: #00C;">this</span><span style="color: #000;">.</span><span style="color: #000;">value</span><span style="color: #000;">.</span><span style="color: #000;">split</span><span style="color: #000;">(</span><span style="color: #F39;">'\n'</span><span style="color: #000;">).</span><span style="color: #000;">length</span><span style="color: #000;">;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #00C;">if</span><span style="color: #000;">&nbsp;(</span><span style="color: #000;">breaks</span><span style="color: #000;">&nbsp;&lt;&nbsp;</span><span style="color: #000;">2</span><span style="color: #000;">)&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000;">height</span><span style="color: #000;">&nbsp;=&nbsp;</span><span style="color: #000;">1</span><span style="color: #000;">.</span><span style="color: #000;">4</span><span style="color: #000;">;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #00C;">else</span><span style="color: #000;">&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000;">height</span><span style="color: #000;">&nbsp;=&nbsp;</span><span style="color: #00C;">this</span><span style="color: #000;">.</span><span style="color: #000;">value</span><span style="color: #000;">.</span><span style="color: #000;">split</span><span style="color: #000;">(</span><span style="color: #F39;">'\n'</span><span style="color: #000;">).</span><span style="color: #000;">length</span><span style="color: #000;">&nbsp;*&nbsp;</span><span style="color: #000;">1</span><span style="color: #000;">.</span><span style="color: #000;">2</span><span style="color: #000;">;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000;">$</span><span style="color: #000;">(</span><span style="color: #00C;">this</span><span style="color: #000;">).</span><span style="color: #000;">css</span><span style="color: #000;">(</span><span style="color: #F39;">'height'</span><span style="color: #000;">,&nbsp;</span><span style="color: #000;">height</span><span style="color: #000;">&nbsp;+&nbsp;</span><span style="color: #F39;">"em"</span><span style="color: #000;">);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000;">$</span><span style="color: #000;">(</span><span style="color: #00C;">this</span><span style="color: #000;">).</span><span style="color: #000;">bind</span><span style="color: #000;">(</span><span style="color: #F39;">"click"</span><span style="color: #000;">,&nbsp;</span><span style="color: #00C;">function</span><span style="color: #000;">(){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #00C;">this</span><span style="color: #000;">.</span><span style="color: #000;">focus</span><span style="color: #000;">();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #00C;">this</span><span style="color: #000;">.</span><span style="color: #000;">select</span><span style="color: #000;">();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});
&nbsp;&nbsp;&nbsp;&nbsp;});
&nbsp;&nbsp;});
}</span>

AttachmentSize
sourcecode_textareas.zip3.21 KB