Merge branch 'bookbag-goodies-tto' into template-toolkit-opac-master-merge
authorLebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Thu, 8 Sep 2011 18:32:12 +0000 (14:32 -0400)
committerLebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Thu, 8 Sep 2011 18:32:12 +0000 (14:32 -0400)
Bookbag Enhancements:
Descriptions, Record Notes, Sorting, CSV Export, new bookbag search
filter

Conflicts:
Open-ILS/src/templates/opac/myopac/lists.tt2
Open-ILS/src/templates/opac/parts/filtersort.tt2
Open-ILS/web/templates/default/opac/myopac/prefs.tt2
Open-ILS/web/templates/default/opac/parts/advanced/search.tt2
Open-ILS/web/templates/default/opac/parts/misc_util.tt2

Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
1  2 
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm
Open-ILS/src/templates/opac/myopac/list/print.tt2
Open-ILS/src/templates/opac/myopac/lists.tt2
Open-ILS/src/templates/opac/parts/advanced/search.tt2
Open-ILS/src/templates/opac/parts/filtersort.tt2
Open-ILS/web/css/skin/default/opac/style.css

index 0000000,0000000..fa3988f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++[%- ctx.csv.template_output.data -%]
index 9e1ba61,0000000..233e948
mode 100644,000000..100644
--- /dev/null
@@@ -1,185 -1,0 +1,245 @@@
-                         <td width="49%" style="padding-left: 5px;">[% l('Title') %]</td>
-                         <td width="49%">[% l('Author(s)') %]</td>
 +[%  PROCESS "opac/parts/header.tt2";
 +    PROCESS "opac/parts/misc_util.tt2";
 +    WRAPPER "opac/parts/myopac/base.tt2";
 +    myopac_page = "lists"  %]
 +<div id='myopac_bookbag_div' style="padding:5px;">
 +
 +    <!-- <div class="header_middle">
 +        <span id="acct_holds_header" style="float:left;">[% l('My Lists') %]</span>
 +        <span style="float:right;"><a class="hide_me" href="#">[% l('Export List') %]</a></span>
 +    </div>
 +    <div style="float:right;width:85px;">
 +        <div style="position:absolute">
 +            <div style="position:relative;top:13px;">
 +                <a href="#" style="position:relative;top:-3px;left:-5px;"><img alt="[% l('Saving Help') %]" 
 +                    src="[% ctx.media_prefix %]/images/question-mark.png" /></a>
 +                <a href="#"><img alt="[% l('Save') %]" src="[% ctx.media_prefix %]/images/save-btn.png"/></a>
 +            </div>
 +        </div>
 +    </div> -->
 +    <div id="temp_wrapper">
 +
 +
 +    <!-- new list creation -->
 +    <form action="[% ctx.opac_root %]/myopac/list/update" method="POST" id="create_form">
 +        <h2>[% l('Create new list') %]</h2><a name="createnewlist"></a>
 +        <table cellpadding="0" border="0" id="list_create_table">
 +            <tr>
 +                <td>
 +                    <label for="list_create_name">[% l('Enter the name of the new list:') %]</label>
++                </td>
++                <td>
 +                    <input id="list_create_name" type="text" name="name" />
 +                    <input type="hidden" name="action" value="create" />
 +                </td>
 +                <td>
 +                    <label for="list_create_shared">[% l('Share this list?') %]</label>
 +                    <select name="shared" id="list_create_shared">
 +                        <option value="0">[% l('No') %]
 +                        <option value="1">[% l('Yes') %]
 +                    </select>
 +                    <a href="javascript:void(0);" onclick="alert(document.getElementById('bb_publish_text').innerHTML);"><img alt="[% l('Sharing Help') %]"
 +                        src="[% ctx.media_prefix %]/images/question-mark.png" /></a>
 +                </td>
 +                <td class="list-create-table-buttons">
 +                    <input type="image" alt="[% l('Submit') %]" src="[% ctx.media_prefix %]/images/btnSubmit.png"/>
 +                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 +                    <a href="javascript:void(0);"
 +                        onclick="document.getElementById('create_form').reset(); return false"><img
 +                        alt="[% l('Cancel') %]"
 +                        src="[% ctx.media_prefix %]/images/btnCancel.png" /></a>
 +                </td>
 +            </tr>
++            <tr>
++                <td class="text-right-top">
++                    <label for="list_description">[% l("List description (optional):") %]</label>
++                </td>
++                <td colspan="3">
++                    <textarea cols="40" rows="3" name="description"
++                        id="list_description"></textarea>
++                </td>
 +        </table>
 +    </form>
 +
++    <h2>[% l("Your existing lists") %]</h2>
++    <p>
++        <form method="GET">
++            <label for="opac.result.sort">[% l("Sort list items by: ") %]</label>
++            [% INCLUDE "opac/parts/filtersort.tt2" value=CGI.param('sort') %]
++            <input type="submit" value="[% l('Sort') %]" />
++        </form>
++    </p>
++
 +    [% INCLUDE "opac/parts/anon_list.tt2" %]
 +    [% IF ctx.bookbags.size %]
 +    <div id='acct_lists_prime'>
 +        [% FOR bbag IN ctx.bookbags %]
 +        <div id='acct_list_template'>
 +            <div style="width:100%">
 +                <form action="[% ctx.opac_root %]/myopac/list/update" method="POST">
 +                    <div class="bookbag-share">
 +                        <input type="hidden" name="list" value="[% bbag.id %]" />
 +                        [% IF bbag.pub != 't' %]
 +                        <input type="hidden" name="action" value="show" />
 +                        <input type="submit" value="[% l('Share') %]" />
 +                        [% ELSE %]
 +                        <input type="hidden" name="action" value="hide" />
 +                        <input type="submit" value="[% l('Hide') %]" />
 +                        [% END %]
 +                    </div>
 +                </form>
 +                <form action="[% ctx.opac_root %]/myopac/list/update" method="POST">
 +                    <div class="bookbag-controls">
 +                        <input type="hidden" name="list" value="[% bbag.id %]" />
 +                        <input type="hidden" name="action" value="delete" />
 +                        <input type="submit" value="[% l('Delete List') %]" />
 +                    </div>
 +                </form>
++                <form action="[% ctx.opac_root %]/myopac/list/print" method="POST" target="_blank">
++                    <div class="bookbag-controls">
++                        <input type="hidden" name="list" value="[% bbag.id %]" />
++                        <input type="hidden" name="sort" value="[% CGI.param('sort') | html %]" />
++                        <input type="submit" value="[% l('Download CSV') %]" />
++                    </div>
++                </form>
 +                <div class="bookbag-controls">
 +                    <big><strong>
 +                    [% IF bbag.pub == 't' %]
 +                        [% url = 'http://' _ ctx.hostname _ '/opac/extras/feed/bookbag/html-full/' _ bbag.id %]
 +                        <a target='_blank' href='[% url %]'>[% bbag.name | html %]</a>
 +                    [% ELSE %]
 +                    [% bbag.name | html %]
 +                    [% END %]
 +                    </strong></big>
++                    [% IF bbag.description %]<br /><em>[% bbag.description | html %]</em>[% END %]
 +                </div>
 +                <div class="bookbag-controls">
 +                    [% IF bbag.pub == 't'; %]
 +                    <a target='_blank' href='/opac/extras/feed/bookbag/rss2-full/[% bbag.id %]'><img
 +                        alt="[% l('RSS Feed') %]" border="0"
 +                        src="[% ctx.media_prefix %]/images/small-rss.png"/></a>
 +                    [% END %]
 +                </div>
 +                <div class="clear-both pad-bottom-five"></div>
 +            </div>
 +            <form action="[% ctx.opac_root %]/myopac/list/update" method="POST">
 +            <input type="hidden" name="list" value="[% bbag.id %]" />
++            <input type="hidden" name="sort" value="[% CGI.param('sort') | uri %]" />
 +            <table cellpadding='0' cellspacing='0' border='0'>
 +                <thead id="acct_list_header">
 +                    <tr>
 +                        <td width="1%" style="padding-left: 10px;">
 +                        <input type="checkbox" onclick="
 +                            var inputs=document.getElementsByTagName('input'); 
 +                            for (i = 0; i < inputs.length; i++) { 
 +                                if (inputs[i].name == 'selected_item' && !inputs[i].disabled && inputs[i].getAttribute('bbag') == [% bbag.id %]) 
 +                                    inputs[i].checked = this.checked;}"/>
 +
 +                        </td>
-                         rec_id = item.target_biblio_record_entry;
++                        <td width="32%" style="padding-left: 5px;">
++                            <a href="[% ctx.opac_root %]/myopac/lists?sort=titlesort">[% l('Title') %]</a>
++                        </td>
++                        <td width="33%">
++                            <a href="[% ctx.opac_root %]/myopac/lists?sort=authorsort">[% l('Author(s)') %]</a>
++                        </td>
++                        <td width="32%">
++                            [% l('Notes') %]
++                            [% IF CGI.param("edit_notes") != bbag.id %]
++                            | <a href="[% ctx.opac_root %]/myopac/lists?[% IF CGI.param('sort'); 'sort='; (CGI.param('sort')) | uri; '&amp;'; END %]edit_notes=[% bbag.id %]">[% l('Edit') %]</a>
++                            [% END %]
++                        </td>
 +                        <td width="1%" class="nowrap">
 +                            <select class="selector_actions_for_list" name="action">
 +                                <option>[% l('-- Actions for this list --') %]</option>
 +                                <option value="place_hold">[% l('Place Hold') %]</option>
 +                                <option value="del_item">[% l('Remove Items') %]</option>
 +                            </select>
 +                            <input type="submit" value="[% l('Go') %]" />
 +                        </td>
 +                    </tr>
 +                </thead>
 +                <tbody>
 +                    [% UNLESS bbag.items.size %]
 +                    <tr><td colspan="4" class="opac-auto-171 opac-auto-097">
 +                        [% l("This list contains no items.") %]
 +                    </td></tr>
 +                    [% END %]
 +                    [% FOR item IN bbag.items;
-                         <td class="item_list_padding" style="padding-left: 10px;"><input type="checkbox" name="selected_item" value="[% item.id %]" bbag='[% bbag.id %]'/></td>
-                         <td class="item_list_padding" style="padding-left: 5px;">[% attrs.title | html %]</td>
-                         <td class="item_list_padding">[% attrs.author | html %]</td>
++                        rec_id = item.target_biblio_record_entry.id;
 +                        attrs = {marc_xml => ctx.bookbags_marc_xml.$rec_id};
 +                        PROCESS get_marc_attrs args=attrs %]
++                    <tr class="bookbag-item-row">
++                        <td class="opac-auto-097b" style="padding-left: 10px;"><input type="checkbox" name="del_item" value="[% item.id %]" bbag='[% bbag.id %]'/></td>
++                        <td class="opac-auto-097b" style="padding-left: 5px;">[% attrs.title | html %]</td>
++                        <td class="opac-auto-097b">[% attrs.author | html %]</td>
++                        [% IF CGI.param("edit_notes") == bbag.id %]
++                        <td class="opac-auto-097b">
++                            [% FOR note IN item.notes %]
++                            <input type="text" name="note-[% note.id %]" value="[% note.note | html %]" />
++                            [% END %]
++                            <input type="text" name="item-[% item.id %]" />
++                        </td>
++                        [% ELSE %]
++                        <td class="opac-auto-097b">
++                            [% FOR note IN item.notes %]
++                            <div>[% note.note | html %]</div>
++                            [% END %]
++                        </td>
++                        [% END %]
++                    </tr>
++                    [% END %]
++                    [% IF CGI.param("edit_notes") == bbag.id %]
 +                    <tr>
-             <br /><br />
++                        <td colspan="3"><!-- All space left of notes column --></td>
++                        <td>
++                            <input type="submit" name="save_notes" value="[% l('Save Notes') %]" />
++                        </td>
 +                    </tr>
 +                    [% END %]
 +                </tbody>
 +            </table>
 +            </form>
++            <hr /><br />
 +        </div>
 +        [% END %]
 +    </div>
 +    [% END %]
 +
 +    <div id='myopac_delete_bookbag_warn' class='hide_me'>
 +        [% l("This will remove the selected bookbag and all items contained within the bookbag.  Are you sure you wish to continue?") %]
 +    </div>
 +    <div style='text-align: center; font-weight: bold;' 
 +        class='hide_me' id='myopac_bookbags_none'>[% l("You have not created any bookbags") %]</div>
 +    <div style='width: 99%; text-align: center'>
 +        <b id='myopac_bookbag_items_name'> </b>
 +    </div>
 +    <span id='bb_publish_text' class='hide_me'>
 +[% |l %]Sharing a Bookbag means that the contents 
 +of the Bookbag will be visible to others.  
 +To see the public view of a shared Bookbag, 
 +click on the Bookbag's name in the Bookbag list.[% END %]
 +    </span>
 +    <span id='myopac_remove_bb_item_confirm' class='hide_me'>
 +        [% l("Are you sure you wish to remove this bookbag item?") %]
 +    </span>
 +    <span id='myopac_make_published_confirm' class='hide_me'>
 +        [% l("Sharing this bookbag will allow the contents of the bookbag to be seen by others.  Are you sure you wish to share this bookbag?") %]
 +    </span>
 +    <span id='myopac_make_unpublished_confirm' class='hide_me'>
 +        [% l("Are you sure you wish to hide this bookbag?") %]
 +    </span>
 +    <span id='myopac_bb_update_success' class='hide_me'>
 +        [% l("The Bookbag was successfully updated.") %]
 +    </span>
 +    <span id='bb_create_warning' class='hide_me'>
 +        [% l("Warning: Adding items to a bookbag creates a link between you and the items in the database.  The contents of the bookbag are NOT publicly viewable unless the bookbag is shared. However, if you prefer not to have any link between your patron record and a particular item or items, we suggest that you do not place said items in a bookbag or that you avoid using bookbags all together.  Thank you.") %]
 +    </span>
 +    <span id='myopac_bb_what_are' class='hide_me'>
 +        [% l("Bookbags are...") %]
 +    </span>
 +    <span class='hide_me' id='bb_update_success'>
 +        [% l("Bookbag successfully updated") %]
 +    </span>
 +
 +</div>
 +[% END %]
index 7e300ed,0000000..a9220e7
mode 100644,000000..100644
--- /dev/null
@@@ -1,128 -1,0 +1,128 @@@
-                             value=CGI.param('sort') %]
 +<form action="[% ctx.opac_root %]/results" method="GET">
 +<table id='adv_global_search' class='data_grid data_grid_center' width='100%'>
 +    <tr style='border-bottom: none;'>
 +        <!-- Contains the user-addable(?) rows to define search class, containment and text -->
 +        <td valign='top' class='adv_global_input_container'>
 +            <table width='100%' id='adv_global_input_table'>
 +                <thead>
 +                    <tr>
 +                        <td>
 +                            <div style="width:100%;" class="header_middle">
 +                                [% l("Search Input") %]
 +                            </div>
 +                        </td>
 +                    </tr>
 +                </thead>
 +                <tbody id='adv_global_tbody'>
 +                    [% INCLUDE "opac/parts/advanced/global_row.tt2" %]
 +                    <!-- add a new row -->
 +                    <tr id='adv_global_addrow'>
 +                        <td align='left' style="padding-top:7px;">
 +                            <a href="javascript:;" id="myopac_new_global_row" onclick='addSearchRow();'>[% l('Add Search Row') %]</a>
 +                        </td>
 +                    </tr>
 +                </tbody>
 +            </table>
 +        </td>
 +    </tr>
 +    <tr>
 +        <td align='top'>
 +          <div style="width:100%;" class="header_middle">[% l('Search Filters') %]</div>
 +          <table cellpadding='10' cellspacing='0' border='0'><tr>
 +            <td valign='top'>
 +                <strong>[% l("Item Type") %]</strong><br />
 +                [%  INCLUDE "opac/parts/coded_value_selector.tt2"
 +                        attr=["mattype", "item_type"] multiple="multiple" size="4" %]
 +            </td>
 +            <td valign='top'>
 +                <strong>[% l("Language") %]</strong><br />
 +                [%  INCLUDE "opac/parts/coded_value_selector.tt2"
 +                        attr="item_lang" multiple="multiple" size="4" %]
 +            </td>
 +            <td valign='top'>
 +                <strong>[% l("Audience") %]</strong><br />
 +                    [% INCLUDE "opac/parts/coded_value_selector.tt2"
 +                        attr=["audience_group", "audience"] multiple="multiple" size="4" %]
 +                </select>
 +            </td>
 +            <td valign='top'>
 +            <strong>[% l("Sort Results") %]</strong>
 +              <table class='adv_global_filter_sort'>
 +                <tr>
 +                    <td align='center' width='100%'>
 +                        [% INCLUDE "opac/parts/filtersort.tt2"
++                            value=CGI.param('sort') class='results_header_sel' %]
 +                    </td>
 +                </tr>
 +              </table>
 +            </td>
 +          </tr></table>
 +        </td>
 +    </tr>
 +    <tr>
 +        <td colspan="2">
 +            <table cellpadding='10' cellspacing='0' border='0'>
 +                <tbody>
 +                    <tr>
 +                        <td valign='top'>
 +                            <strong>[% l("Search Library") %]</strong><br />
 +                            [% PROCESS "opac/parts/org_selector.tt2";
 +                                PROCESS build_org_selector name='loc' value=loc %]
 +                            <div style="position:relative;top:7px;">
 +                                <input type='checkbox' name="modifier"
 +                                    value="available"[% CGI.param('modifier').grep('available').size ? ' checked="checked"' : '' %]
 +                                    id='opac.result.limit2avail' />
 +                                <label style="position:relative;top:-2px;"
 +                                    for='opac.result.limit2avail'>
 +                                    [% l("Limit to Available") %]</label>
 +                            </div>
 +                        </td>
 +                        <td valign='top'>
 +                            <strong>[% l("Publication Year") %]</strong><br />
 +                            <select name='pubdate' onchange='
 +                                if(this.selectedIndex == 3)
 +                                    unHideMe($("adv_global_pub_date_2_span"));
 +                                else
 +                                    hideMe($("adv_global_pub_date_2_span"));'>
 +                                    [%  FOR opt IN [
 +                                            {"code" => "is", "label" => l("Is")},
 +                                            {"code" => "before", "label" => l("Before")},
 +                                            {"code" => "after", "label" => l("After")},
 +                                            {"code" => "between", "label" => l("Between")}
 +                                        ];
 +                                            |l(opt.code, opt.label) %]
 +                                        <option value="[_1]"[% CGI.param('pubdate') == opt.code ? ' selected="selected"' : '' %]>[_2]</option>
 +                                    [%  END; END %]
 +                            </select>    
 +                            <div style='margin-top:5px;'>
 +                                <input name='date1' type='text' size='4' maxlength='4' value="[% CGI.param('date1') | html %]" />
 +                                <span id='adv_global_pub_date_2_span' class='[% CGI.param("pubdate") == "between" ? "" : "hide_me" %]'>
 +                                   [% l("and") %] <input name='date2' type='text' size='4' maxlength='4' value="[% CGI.param('date2') | html %]" />
 +                                </span>
 +                            </div>
 +                        </td>
 +                    </tr>
 +                    <!-- TODO: Copy Location Filter -->
 +                    <tr class='hide_me'>
 +                        <td align='right'>[% l("Shelving Location") %]</td>
 +                        <td align='left'>
 +                            <select size='3' multiple='multiple'>
 +                                [%# TODO: add filter options... %]
 +                            </select>
 +                        </td>
 +                    </tr>
 +                </tbody>
 +            </table>
 +        </td>
 +    </tr>
 +    <tr class='border_4_2'>
 +        <td align="left" colspan='2'>
 +            <input type="image" src="[% ctx.media_prefix %]/images/search_btn.gif"
 +            alt="[% l('Search') %]" class='pointer' />
 +            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 +            <a href="[% mkurl('', {}, 1) %]">[% l('Reset Form') %]</a>
 +        </td>
 +    </tr>
 +</table>
 +<input type="hidden" name="_adv" value="1" />
 +</form>
index 664be17,0000000..97dc447
mode 100644,000000..100644
--- /dev/null
@@@ -1,16 -1,0 +1,15 @@@
- <select class="results_header_sel" id='opac.result.sort' name="sort"
-     [% IF submit_on_change %]onchange='this.form.submit()'[% END %]>
++<select [% class ? ('class="' _ class _ '"') : '' %] id="opac.result.sort" name="[% name || 'sort' %]" [% IF submit_on_change %]onchange='this.form.submit()'[% END %]>
 +    <option value=''>[% l("Sort by Relevance") %]</option>
 +    <optgroup label='[% l("Sort by Title") %]'>
 +        <option value='titlesort'[% value == 'titlesort' ? ' selected="selected"' : '' %]>[% l("Title: A to Z") %]</option>
-         <option value='titlesort.desc'[% value == 'titlesort.desc' ? ' selected="selected"' : '' %]>[% l("Title: Z to A") %]</option>
++        <option value='titlesort.descending'[% value == 'titlesort.descending' ? ' selected="selected"' : '' %]>[% l("Title: Z to A") %]</option>
 +    </optgroup>
 +    <optgroup label='[% l("Sort by Author") %]'>
 +        <option value='authorsort'[% value == 'authorsort' ? ' selected="selected"' : '' %]>[% l("Author: A to Z") %]</option>
-         <option value='authorsort.desc'[% value == 'authorsort.desc' ? ' selected="selected"' : '' %]>[% l("Author: Z to A") %]</option>
++        <option value='authorsort.descending'[% value == 'authorsort.descending' ? ' selected="selected"' : '' %]>[% l("Author: Z to A") %]</option>
 +    </optgroup>
 +    <optgroup label='[% l("Sort by Publication Date") %]'>
-         <option value='pubdate.desc'[% value == 'pubdate.desc' ? ' selected="selected"' : '' %]>[% l("Date: Newest to Oldest") %]</option>
++        <option value='pubdate.descending'[% value == 'pubdate.descending' ? ' selected="selected"' : '' %]>[% l("Date: Newest to Oldest") %]</option>
 +        <option value='pubdate'[% value == 'pubdate' ? ' selected="selected"' : '' %]>[% l("Date: Oldest to Newest") %]</option>
 +    </optgroup>
 +</select>