tpac added content default type improvements
authorBill Erickson <berick@esilibrary.com>
Fri, 18 May 2012 17:23:53 +0000 (13:23 -0400)
committerMike Rylander <mrylander@gmail.com>
Fri, 25 May 2012 12:57:28 +0000 (08:57 -0400)
* In the pre-JS state, only choose a default display type when the type
is known to have data.

* If no default type is chosen for the main tab link, because no data
was available to the template, set the default from the first added
content type determined to be available via JS.

* Move added content JS to separate template file for easier override.

Signed-off-by: Bill Erickson <berick@esilibrary.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Open-ILS/src/templates/opac/parts/acjs.tt2 [new file with mode: 0644]
Open-ILS/src/templates/opac/parts/js.tt2
Open-ILS/src/templates/opac/parts/record/extras.tt2

diff --git a/Open-ILS/src/templates/opac/parts/acjs.tt2 b/Open-ILS/src/templates/opac/parts/acjs.tt2
new file mode 100644 (file)
index 0000000..fe15569
--- /dev/null
@@ -0,0 +1,55 @@
+
+<script type="text/javascript">
+
+    /* Checks to see if a given type of added content has data to show.
+     * The first arg to callback() is boolean indicating the presence of data */
+    function acIsAvailable(ident, type, callback) {
+        var url = '/opac/extras/ac/' + type + '/html/' + ident;
+        dojo.xhr('HEAD', {
+            url : url, 
+            failOk : true, // http://bugs.dojotoolkit.org/ticket/11568
+            error : function(err) { callback(false, ident, type); },
+            load : function(result) { callback(true, ident, type); }
+        });
+    }
+
+    [%-  # XXX revisit when ident=ctx.bre_id
+        ident = ctx.record_attrs.isbn_clean || ctx.record_attrs.upc; 
+        IF ident; 
+            FOR type IN ctx.added_content.keys;
+                IF ctx.added_content.$type.status == '3' # status unknown %]
+
+                    dojo.addOnLoad(function() {
+                        var ident = '[% ident %]';
+                        var type = '[% type %]';
+
+                        acIsAvailable(ident, type, function(avail, ident, type) { 
+                            if (avail) {
+
+                                [% IF CGI.param('expand') == 'addedcontent' %]
+
+                                    // if the content is available, un-hide the tab
+                                    dojo.removeClass(dojo.byId('ac:' + type), 'hidden');
+
+                                [% ELSE %]
+                                    // if no default type is selected on the main tab link
+                                    // set one here, since we have available content
+
+                                    var link = dojo.query('[name=addedcontent]')[0];
+                                    var href = link.getAttribute('href');
+                                    if (!href.match('[\&;]ac=')) {
+                                        href = href.replace('#addedcontent', ';ac=' + type + '#addedcontent');
+                                        dojo.attr(link, 'href', href);
+                                        dojo.attr(dojo.query('[name=addedcontent_lbl]')[0], 'href', href);
+                                    }
+
+                                [% END %]
+                            }
+                        });
+                    });
+                [% END; # IF status unknown
+            END; 
+        END; # IF ident
+    %]
+</script>
+
index ff2cb29..7029554 100644 (file)
 </script>
 [% END; # use_autosuggest %]
 
-
-[% IF ctx.page == 'record' %]
-<script type="text/javascript">
-
-    /* Checks to see if a given type of added content has data to show.
-     * The first arg to callback() is boolean indicating the presence of data.
-     */
-    function acIsAvailable(ident, type, callback) {
-        var url = '/opac/extras/ac/' + type + '/html/' + ident;
-        dojo.xhr('HEAD', {
-            url : url, 
-            failOk : true, // http://bugs.dojotoolkit.org/ticket/11568
-            error : function(err) { callback(false, ident, type); },
-            load : function(result) { callback(true, ident, type); }
-        });
-    }
-    [%-  # XXX revisit when ident=ctx.bre_id
-        ident = ctx.record_attrs.isbn_clean || ctx.record_attrs.upc; 
-        IF ident; 
-            FOR type IN ctx.added_content.keys;
-                IF ctx.added_content.$type.status == '3' # status unknown %]
-                    dojo.addOnLoad(function() {
-                        var ident = '[% ident %]';
-                        var type = '[% type %]';
-                        acIsAvailable(ident, type, function(avail, ident, type) { 
-                            // if the content is available, un-hide the tab
-                            if (avail) dojo.removeClass(dojo.byId('ac:' + type), 'hidden');
-                        });
-                    });
-                [% END; # IF status unknown
-            END; 
-        END; # IF ident
-    %]
-</script>
-[% END; # page=record -%]
+[% INCLUDE "opac/parts/acjs.tt2" IF ctx.page == 'record' %]
 
 [%- END; # want_dojo -%]
index 7b5c378..276c969 100644 (file)
@@ -27,6 +27,8 @@
             FOR type IN ctx.added_content.keys;
                 IF ctx.added_content.$type.status != '2'; # not available
                     hide_ac = 0;
+                END;
+                IF ctx.added_content.$type.status == '1';
                     SET default_ac = type UNLESS default_ac;
                 END;
             END;
@@ -66,7 +68,7 @@
                     END;
                 %]
                 <a name='[% name %]' href='[% href %]'><img alt='[% extra.label %]' src='[% img_url %]'/></a>
-                <a href='[% href %]' class="rdetail_extras_lbl">[% extra.label %]</a>
+                <a name='[% name %]_lbl' href='[% href %]' class="rdetail_extras_lbl">[% extra.label %]</a>
             </div>
         </div>
         <div class='rdetail_extras_div'>