]> git.andy128k.dev Git - ipf.git/commitdiff
delay admin scripts
authorAndrey Kutejko <andy128k@gmail.com>
Tue, 7 May 2013 19:16:19 +0000 (22:16 +0300)
committerAndrey Kutejko <andy128k@gmail.com>
Tue, 7 May 2013 19:16:19 +0000 (22:16 +0300)
ipf/admin/media/css/forms.css
ipf/admin/templates/admin/base.html
ipf/admin/templates/admin/change.html
ipf/form.php
ipf/form/widget.php
ipf/form/widget/htmlinput.php

index 2d112cfad15d45a8158abbfede2e1024c048c8f1..adc124905ed1d56e97ff1a0f1ff35751f1be35f7 100644 (file)
@@ -54,6 +54,12 @@ fieldset.collapsed .collapse-toggle { padding:3px 5px !important; background:tra
 /* MONOSPACE TEXTAREAS */
 fieldset.monospace textarea { font-family:"Bitstream Vera Sans Mono",Monaco,"Courier New",Courier,monospace; }
 
+/* INLINE */
+.inline-related table {width: 100%;}
+
+/* INLINE REORDER */
+.ItemsDragClass{background-color:#E3F3FE;}
+
 /* SUBMIT ROW */
 .submit-row { padding:5px 7px; text-align:right; background:white url(../img/nav-bg.gif) 0 100% repeat-x; border:1px solid #ccc; margin:5px 0; }
 .submit-row input { margin:0 0 0 5px; }
@@ -69,6 +75,3 @@ fieldset.monospace textarea { font-family:"Bitstream Vera Sans Mono",Monaco,"Cou
 .flatpages-flatpage #id_content { height:40.2em; }
 .module table .vPositiveSmallIntegerField { width:2.2em; }
 
-/* INLINE REORDER */
-.ItemsDragClass{background-color:#E3F3FE;}
-
index 59122bf6a9dae64f83144dba3879bb178ebdf40f..3c8a35e86dddfc9616639833cbe11df1099c8e32 100644 (file)
 </head>
 
 <body class="{block bodyclass}{/block}">
-{block commonjs}
-{if isset($form) && method_exists($form, 'render_commonjs')}
-{$form.render_commonjs()|safe}
-{else}
-<script language="javascript" type="text/javascript" src="{$ADMIN_MEDIA_URL}js/jquery.js"></script>
-<script language="javascript" type="text/javascript" src="{$ADMIN_MEDIA_URL}js/jquery-ui.custom.js"></script>
-<script language="javascript" type="text/javascript" src="{$ADMIN_MEDIA_URL}js/admin.js"></script>
-{/if}
-{/block}
-
 <div id="container">
     <div id="header">
         <div id="branding">
     {block content}{/block}
     <div id="footer"></div>
 </div>
+{block commonjs}
+  {if isset($form) && method_exists($form, 'render_commonjs')}
+    {$form.render_commonjs()|safe}
+  {else}
+    <script type="text/javascript" src="{$ADMIN_MEDIA_URL}js/jquery.js"></script>
+    <script type="text/javascript" src="{$ADMIN_MEDIA_URL}js/jquery-ui.custom.js"></script>
+    <script type="text/javascript" src="{$ADMIN_MEDIA_URL}js/admin.js"></script>
+  {/if}
+{/block}
 {block scripts}{/block}
 </body>
 </html>
index 8cbc64093602aa65b4f531e2e4c6d81ecedf6618..c4a230c2fa509404dbea11c49ef754fb6e3b84f3 100644 (file)
                 <div class="tabular inline-related">
                     <fieldset class="module">
                     <h2>{$inline->getLegend()}</h2>
-                    <table{if $inline->_orderable()}
-                        class="orderable-inlne"
-                        data-url="{url 'IPF_Admin_Views_ListItems', array($inline->getApplication()->getSlug(), strtolower($inline->getModelName()))}"
-                    {/if}>
+                    <table{if $inline->_orderable()} class="orderable-inlne" data-url="{url 'IPF_Admin_Views_ListItems', array($inline->getApplication()->getSlug(), strtolower($inline->getModelName()))}"{/if}>
                         {foreach $inline.formset as $formset}
                         {if $formset.isFirst}
                         <thead>
index 9fd280fb439de3bd7ff40c9057b6b6d63489f39a..c490ca97752a3f3b6442ede89e1098358219d986 100644 (file)
@@ -18,7 +18,6 @@ class IPF_Form implements Iterator
 
     protected $is_valid = null;
 
-
     function __construct($data=null, $extra=array(), $label_suffix=null)
     {
         if ($data !== null) {
@@ -44,16 +43,16 @@ class IPF_Form implements Iterator
         return $field_name;
     }
 
-    function hasFileField(){
-        foreach($this->fields as $field){
-            if (is_a($field,'IPF_Form_Field_File')){
+    function hasFileField()
+    {
+        foreach ($this->fields as $field)
+            if (is_a($field,'IPF_Form_Field_File'))
                 return true;
-            }
-        }
         return false;
     }
 
-    function isValid(){
+    function isValid()
+    {
         if ($this->is_valid !== null) {
             return $this->is_valid;
         }
@@ -160,18 +159,17 @@ class IPF_Form implements Iterator
             }
         }
         
-        if (!count($groups))
-        {
-            $groups = array(array('fields'=>$this->fields));
+        if (count($groups)) {
+            $render_group_title = $group_title ? true : false;
+        } else {
+            $groups = array(array('fields' => $this->fields));
             $render_group_title = false;
         }
-        else $render_group_title = $group_title ? true : false;
-        
-        foreach ($groups as $group)
-        {
+
+        foreach ($groups as $group) {
             if ($render_group_title && array_key_exists('label', $group))
                 $output[] = sprintf($group_title, $group['label']);
-            
+
             foreach ($group['fields'] as $name=>$field) {
                 $bf = new IPF_Form_BoundField($this, $field, $name);
                 $bf_errors = $bf->errors;
@@ -237,7 +235,14 @@ class IPF_Form implements Iterator
                 $output[] = $_tmp;
             }
         }
-        return new IPF_Template_SafeString($this->before_render.implode("\n", $output).$this->after_render, true);
+
+        $extra_js = array();
+        foreach ($groups as $group)
+            foreach ($group['fields'] as $name => $field)
+                $extra_js = array_merge($extra_js, $field->widget->extra_js());
+        $output[] = implode("\n", array_unique($extra_js));
+
+        return new IPF_Template_SafeString($this->before_render . implode("\n", $output) . $this->after_render, true);
     }
 
     public function render_p()
@@ -252,19 +257,23 @@ class IPF_Form implements Iterator
 
     public function render_table()
     {
-        return $this->htmlOutput('<tr><th>%2$s</th><td>%1$s%3$s%4$s</td></tr>',
-                                 '<tr><td colspan="2">%s</td></tr>',
-                                 '</td></tr>', '<br /><span class="helptext">%s</span>', false);
+        return $this->htmlOutput(
+            '<tr><th>%2$s</th><td>%1$s%3$s%4$s</td></tr>',
+            '<tr><td colspan="2">%s</td></tr>',
+            '</td></tr>',
+            '<br /><span class="helptext">%s</span>',
+            false);
     }
 
     public function render_admin()
     {
         return $this->htmlOutput(
-                       '<div class="form-row"><div>%2$s %1$s%3$s%4$s</div></div>',
+            '<div class="form-row"><div>%2$s %1$s%3$s%4$s</div></div>',
             '<div>%s</div>',
-            '</div>', '<p class="help">%s</p>', true,
-            '<div class="form-group-title">%s</div>'
-        );
+            '</div>',
+            '<p class="help">%s</p>',
+            true,
+            '<div class="form-group-title">%s</div>');
     }
 
     function __get($prop)
@@ -280,33 +289,32 @@ class IPF_Form implements Iterator
         return new IPF_Form_BoundField($this, $this->fields[$key], $key);
     }
 
-       public function current()
+    public function current()
     {
         $field = current($this->fields);
         $name = key($this->fields);
         return new IPF_Form_BoundField($this, $field, $name);
     }
 
-       public function key()
+    public function key()
     {
         return key($this->fields);
     }
 
-       public function next()
+    public function next()
     {
         next($this->fields);
     }
 
-       public function rewind()
+    public function rewind()
     {
         reset($this->fields);
     }
 
-       public function valid()
+    public function valid()
     {
         return (false !== current($this->fields));
     }
-
 }
 
 function IPF_Form_htmlspecialcharsArray(&$item, $key)
@@ -316,8 +324,8 @@ function IPF_Form_htmlspecialcharsArray(&$item, $key)
 
 function IPF_Form_renderErrorsAsHTML($errors)
 {
-       if (count($errors)==0)
-               return '';
+    if (count($errors)==0)
+        return '';
     $tmp = array();
     foreach ($errors as $err) {
         $tmp[] = '<li>'.$err.'</li>';
index 587093818c96645e6ad003a6633c58cb62eb631f..8e7c2358384044b817ef0c6e92c52e569f5bcc23 100644 (file)
@@ -17,6 +17,11 @@ class IPF_Form_Widget
         throw new IPF_Exception('Not Implemented.');
     }
 
+    public function extra_js()
+    {
+        return array();
+    }
+
     protected function buildAttrs($attrs, $extra_attrs=array())
     {
         return array_merge($this->attrs, $attrs, $extra_attrs);
@@ -52,3 +57,4 @@ function IPF_Form_Widget_Attrs($attrs)
     }
     return ' '.implode(' ', $_tmp);
 }
+
index 3ed0f7874e805d557deab279e4e80293bcaab665..b8b26ec210c7d83e74553c2760a83baab2f44e63 100644 (file)
@@ -6,8 +6,6 @@ class IPF_Form_Widget_HTMLInput extends IPF_Form_Widget
     public $theme = 'simple';
     public $include_tinymce = true;
 
-    static $js_include = False;
-
     public function __construct($attrs=array())
     {
         $defaults = array('cols' => '70',
@@ -46,57 +44,56 @@ class IPF_Form_Widget_HTMLInput extends IPF_Form_Widget
             }
         }
         $final_attrs = $this->buildAttrs(array('name' => $name), $extra_attrs);
-        $out = '';
-        if (!IPF_Form_Widget_HTMLInput::$js_include){
-            IPF_Form_Widget_HTMLInput::$js_include = true;
-                    $out .= '<script language="javascript" type="text/javascript" src="'.IPF::get('tiny_mce_url').'tiny_mce.js"></script>'."\n";
-                    $out .='<script language="javascript" type="text/javascript">
-                                       function ipf_filebrowser(field_name, url, type, win) {
-                                       var cmsURL = "/admin/filebrowser/";
-                                           tinyMCE.activeEditor.windowManager.open({
-                                               file : cmsURL,
-                                               title : "IPF File Browser",
-                                               width : 800,
-                                               height : 600,
-                                               resizable : "yes",
-                                               inline : "yes",
-                                               close_previous : "no"
-                                           }, {
-                                               window : win,
-                                               input : field_name
-                                           });
-                                           return false;
-                                 }
-               tinyMCE.init({
-                    theme_advanced_buttons1 : "bold, italic, underline, separator, undo, redo, separator, bullist, numlist, outdent, indent, separator, justifyleft, justifycenter, justifyright, justifyfull, separator, link, unlink, forecolor, backcolor, sub, sup, separator, preview",
-                    theme_advanced_buttons2 : "code, fullscreen, image, charmap, separator, pastetext, pasteword, selectall, removeformat, separator, formatselect, fontselect, fontsizeselect",
-                    theme_advanced_buttons3 : "tablecontrols",
-                    theme_advanced_toolbar_location : "top",
-                    theme_advanced_toolbar_align: "left",
-                    extended_valid_elements : "span[class|style],code[class],iframe[src|width|height|name|align|frameborder|scrolling]",
-                    mode : "specific_textareas",
-                    editor_selector : "htmlEditor",
-                       theme : "advanced",
-                       convert_urls:"false",
-                       plugins : "inlinepopups, charmap, paste, table, fullscreen, preview, print, advlink, advimage",
-                    button_tile_map : true,
-                    fix_list_elements : true,
-                    gecko_spellcheck : true,
-                    verify_html : true,
-                    dialog_type : "modal",
-                    width : "80%",
-                    height : "350",
-                    relative_urls : false,
-                    remove_script_host : true,
-                    content_css : "/media/tiny_mce/themes/advanced/skins/default/content.css",
-                    file_browser_callback : "ipf_filebrowser"
-               });
-            </script>';
-        }
-        return new IPF_Template_SafeString(
-                       $out.sprintf('<textarea%s class="htmlEditor">%s</textarea>',
-                               IPF_Form_Widget_Attrs($final_attrs),
-                               htmlspecialchars($value, ENT_COMPAT, 'UTF-8')),
-                       true);
+        return new IPF_Template_SafeString('<textarea'.IPF_Form_Widget_Attrs($final_attrs).' class="htmlEditor">'.htmlspecialchars($value, ENT_COMPAT, 'UTF-8').'</textarea>', true);
+    }
+
+    public function extra_js()
+    {
+        return array(
+            '<script type="text/javascript" src="'.IPF::get('tiny_mce_url').'tiny_mce.js"></script>',
+            '<script type="text/javascript">
+function ipf_filebrowser(field_name, url, type, win) {
+  var cmsURL = "/admin/filebrowser/";
+  tinyMCE.activeEditor.windowManager.open({
+    file: cmsURL,
+    title: "IPF File Browser",
+    width: 800,
+    height: 600,
+    resizable: "yes",
+    inline: "yes",
+    close_previous: "no"
+  }, {
+    window: win,
+    input: field_name
+  });
+  return false;
+}
+tinyMCE.init({
+  theme_advanced_buttons1: "bold, italic, underline, separator, undo, redo, separator, bullist, numlist, outdent, indent, separator, justifyleft, justifycenter, justifyright, justifyfull, separator, link, unlink, forecolor, backcolor, sub, sup, separator, preview",
+  theme_advanced_buttons2: "code, fullscreen, image, charmap, separator, pastetext, pasteword, selectall, removeformat, separator, formatselect, fontselect, fontsizeselect",
+  theme_advanced_buttons3: "tablecontrols",
+  theme_advanced_toolbar_location: "top",
+  theme_advanced_toolbar_align: "left",
+  extended_valid_elements: "span[class|style],code[class],iframe[src|width|height|name|align|frameborder|scrolling]",
+  mode: "specific_textareas",
+  editor_selector: "htmlEditor",
+  theme: "advanced",
+  convert_urls: "false",
+  plugins: "inlinepopups, charmap, paste, table, fullscreen, preview, print, advlink, advimage",
+  button_tile_map: true,
+  fix_list_elements: true,
+  gecko_spellcheck: true,
+  verify_html: true,
+  dialog_type: "modal",
+  width: "80%",
+  height: "350",
+  relative_urls: false,
+  remove_script_host: true,
+  content_css: "/media/tiny_mce/themes/advanced/skins/default/content.css",
+  file_browser_callback: "ipf_filebrowser"
+});
+</script>',
+        );
     }
-}
\ No newline at end of file
+}
+