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;"><?php</span><span style="color: #000;">
</span><span style="color: #555;">/**
* Implementation of hook_menu
*
* Loads the javascript.
*/</span><span style="color: #000;">
</span><span style="color: #00C;">function</span><span style="color: #000;"> </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;">) {
</span><span style="color: #00C;">if</span><span style="color: #000;"> (!</span><span style="color: #000;">$may_cache</span><span style="color: #000;">) {
</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;">, </span><span style="color: #F39;">'sourcecode_textareas'</span><span style="color: #000;">)
.</span><span style="color: #F39;">'/sourcecode_textareas.js'</span><span style="color: #000;">);
}
} </span>
sourcecode_textareas.js
<span style="color: #00C;">if</span><span style="color: #000;"> (</span><span style="color: #000;">Drupal</span><span style="color: #000;">.</span><span style="color: #000;">jsEnabled</span><span style="color: #000;">) {
</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;">() {
</span><span style="color: #000;">$</span><span style="color: #000;">(</span><span style="color: #F39;">"form.sourcecode > 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;">){
</span><span style="color: #00C;">var</span><span style="color: #000;"> </span><span style="color: #000;">breaks</span><span style="color: #000;"> = </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;">;
</span><span style="color: #00C;">if</span><span style="color: #000;"> (</span><span style="color: #000;">breaks</span><span style="color: #000;"> < </span><span style="color: #000;">2</span><span style="color: #000;">) {
</span><span style="color: #000;">height</span><span style="color: #000;"> = </span><span style="color: #000;">1</span><span style="color: #000;">.</span><span style="color: #000;">4</span><span style="color: #000;">;
} </span><span style="color: #00C;">else</span><span style="color: #000;"> {
</span><span style="color: #000;">height</span><span style="color: #000;"> = </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;"> * </span><span style="color: #000;">1</span><span style="color: #000;">.</span><span style="color: #000;">2</span><span style="color: #000;">;
}
</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;">, </span><span style="color: #000;">height</span><span style="color: #000;"> + </span><span style="color: #F39;">"em"</span><span style="color: #000;">);
</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;">, </span><span style="color: #00C;">function</span><span style="color: #000;">(){
</span><span style="color: #00C;">this</span><span style="color: #000;">.</span><span style="color: #000;">focus</span><span style="color: #000;">();
</span><span style="color: #00C;">this</span><span style="color: #000;">.</span><span style="color: #000;">select</span><span style="color: #000;">();
});
});
});
}</span>
| Attachment | Size |
|---|---|
| sourcecode_textareas.zip | 3.21 KB |
