Changeset 1241


Ignore:
Timestamp:
Dec 9, 2010, 1:26:39 PM (12 years ago)
Author:
work@…
Message:
  • added Facebook like support
Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/dbnp/studycapturing/StudyController.groovy

    r1222 r1241  
    9393            // use the same view for showing the study and comparing multiple
    9494            // studies
    95             [studyList: [ studyInstance ], multipleStudies: false, loggedInUser: loggedInUser ]
     95            [studyList: [ studyInstance ], multipleStudies: false, loggedInUser: loggedInUser, facebookLikeUrl: "/study/show/${studyInstance?.id}" ]
    9696        }
    9797    }
  • trunk/grails-app/views/layouts/main.gsp

    r1119 r1241  
    1616        <script type="text/javascript" src="${resource(dir: 'js', file: 'topnav.js')}"></script>
    1717        <g:if env="development"><script type="text/javascript" src="${resource(dir: 'js', file: 'development.js')}"></script></g:if>
     18    <script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
    1819</head>
    1920<body>
     
    2526        </div>
    2627        <div id="content"><g:layoutBody/></div>
     28        <g:if test="${facebookLikeUrl}">
     29        <div id="facebookConnect">
     30                <fb:like href="${resource(absolute: true)}${facebookLikeUrl}" show_faces="true" width="450" action="recommend" font="arial"></fb:like>
     31        </div>
     32        </g:if>
    2733        <div id="footer">
    2834                Copyright © 2008 - <g:formatDate format="yyyy" date="${new Date()}"/> NuGO, NMC and NBIC. All rights reserved. For more information go to <a href="http://dbnp.org">http://dbnp.org</a>.
  • trunk/grails-app/views/study/show.gsp

    r1213 r1241  
    33<%@ page import="dbnp.studycapturing.RelTime" %>
    44<html>
    5   <head>
    6     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    7     <meta name="layout" content="main" />
    8     <g:set var="entityName" value="${message(code: 'study.label', default: 'Study')}" />
    9     <title><g:message code="default.show.label" args="[entityName]" /></title>
    10     <script type="text/javascript">
    11       // Number of timelines that should be loaded
    12       var numTimelines = ${studyList?.size()};
    13      
    14       // This method is called on the event body.onLoad
    15       $(function() {
    16               $("#tabs").tabs({
    17                 load: function(event, ui) {
    18                   // If the events tab is shown, the timeline should be redrawn
    19                   if( ui.tab.hash == '#Events_timeline' ) {
    20                     loadTimeline( 'eventstimeline', 'eventtitles', 0 );
    21                   }
    22                 },
     5<head>
     6        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
     7        <meta name="layout" content="main"/>
     8        <g:set var="entityName" value="${message(code: 'study.label', default: 'Study')}"/>
     9        <title><g:message code="default.show.label" args="[entityName]"/></title>
     10        <script type="text/javascript">
     11                // Number of timelines that should be loaded
     12                var numTimelines = ${studyList?.size()};
     13
     14                // This method is called on the event body.onLoad
     15                $(function() {
     16                        $("#tabs").tabs({
     17                                load: function(event, ui) {
     18                                        // If the events tab is shown, the timeline should be redrawn
     19                                        if (ui.tab.hash == '#Events_timeline') {
     20                                                loadTimeline('eventstimeline', 'eventtitles', 0);
     21                                        }
     22                                },
    2323                                ajaxOptions: {
    24                                         error: function( xhr, status, index, anchor ) {
    25                                                 $( anchor.hash ).html(
    26                                                         "Couldn't load this tab. We'll try to fix this as soon as possible." );
     24                                        error: function(xhr, status, index, anchor) {
     25                                                $(anchor.hash).html(
     26                                                        "Couldn't load this tab. We'll try to fix this as soon as possible.");
    2727                                        }
    2828                                }
    29               });
    30       });
    31 
    32       // Parameters for the SIMILE timeline
    33           Timeline_ajax_url="${resource(dir: 'js', file: 'timeline-simile/timeline_ajax/simile-ajax-api.js')}";
    34       Timeline_urlPrefix='${resource(dir: 'js', file: 'timeline-simile/')}';
    35       Timeline_parameters='bundle=true';
    36 
    37     </script>
    38     <link rel="stylesheet" type="text/css" href="${resource(dir: 'css', file: 'studies.css')}"/>
    39 
    40     <!-- Include scripts for the SIMILE timeline. See http://simile-widgets.org/wiki/ -->
    41     <script src="${resource(dir: 'js', file: 'timeline-simile/timeline-api.js')}" type="text/javascript"></script>
    42     <script src="${resource(dir: 'js', file: 'timeline-simile/custom-timeline.js')}" type="text/javascript"></script>
    43     <script src="${resource(dir: 'js', file: 'timeline-simile/relative-time.js')}" type="text/javascript"></script>
    44     <script src="${resource(dir: 'js', file: 'jquery-callback-1.2.js')}" type="text/javascript"></script>
    45 
    46     <!-- Create the JSON objects for the timeline with events -->
    47     <script type="text/javascript" src="<g:createLink action="createTimelineBandsJs" id="${studyList.id.join(',')}" />" type="text/javascript"></script>
     29                        });
     30                });
     31
     32                // Parameters for the SIMILE timeline
     33                Timeline_ajax_url = "${resource(dir: 'js', file: 'timeline-simile/timeline_ajax/simile-ajax-api.js')}";
     34                Timeline_urlPrefix = '${resource(dir: 'js', file: 'timeline-simile/')}';
     35                Timeline_parameters = 'bundle=true';
     36
     37        </script>
     38        <link rel="stylesheet" type="text/css" href="${resource(dir: 'css', file: 'studies.css')}"/>
     39
     40        <!-- Include scripts for the SIMILE timeline. See http://simile-widgets.org/wiki/ -->
     41        <script src="${resource(dir: 'js', file: 'timeline-simile/timeline-api.js')}" type="text/javascript"></script>
     42        <script src="${resource(dir: 'js', file: 'timeline-simile/custom-timeline.js')}" type="text/javascript"></script>
     43        <script src="${resource(dir: 'js', file: 'timeline-simile/relative-time.js')}" type="text/javascript"></script>
     44        <script src="${resource(dir: 'js', file: 'jquery-callback-1.2.js')}" type="text/javascript"></script>
     45
     46        <!-- Create the JSON objects for the timeline with events -->
     47        <script type="text/javascript" src="<g:createLink action="createTimelineBandsJs" id="${studyList.id.join(',')}"/>" type="text/javascript"></script>
    4848</head>
    4949<body>
    5050
    51   <div class="body" id="studies">
    52     <h1><g:message code="default.show.label" args="[entityName]" /></h1>
    53     <g:if test="${flash.message}">
    54       <div class="message">${flash.message}</div>
    55     </g:if>
    56     <div class="dialog">
    57       <div id="tabs">
    58         <ul>
    59           <li><a href="#study">Study Information</a></li>
    60           <li><a href="<g:createLink action="show_subjects" id="${studyList.id.join(',')}" />" title="Subjects"><span>Subjects</span></a></li>
    61           <li><a href="<g:createLink action="show_events_timeline" id="${studyList.id.join(',')}" />" title="Events timeline"><span>Events timeline</span></a></li>
    62           <li><a href="<g:createLink action="show_events_table" id="${studyList.id.join(',')}" />" title="Events table"><span>Events table</span></a></li>
    63           <li><a href="<g:createLink action="show_assays" id="${studyList.id.join(',')}" />" title="Assays"><span>Assays</span></a></li>
    64           <li><a href="<g:createLink action="show_samples" id="${studyList.id.join(',')}" />" title="Samples"><span>Samples</span></a></li>
    65           <li><a href="<g:createLink action="show_persons" id="${studyList.id.join(',')}" />" title="Persons"><span>Persons</span></a></li>
    66           <li><a href="<g:createLink action="show_publications" id="${studyList.id.join(',')}" />" title="Publications"><span>Publications</span></a></li>
    67         </ul>
    68 
    69         <div id="study">
    70           <table>
    71             <!-- only show the head section if there are multiple studies -->
    72             <g:if test="${multipleStudies}">
    73               <thead>
    74                 <tr>
    75                   <th></th>
    76                   <g:each in="${studyList}" var="studyInstance">
    77                     <th>${studyInstance.title}</th>
    78                   </g:each>
    79                 </tr>
    80               </thead>
    81             </g:if>
    82             <%
    83               // Determine a union of the fields from all studies, in order
    84               // to show a proper list. We want every field to appear just once,
    85               // so the list is filtered for unique values
    86               studyFields = studyList[0].giveDomainFields() + studyList*.giveTemplateFields()?.flatten().unique()
    87             %>
    88             <!-- Show all template and domain fields, if filled -->
    89             <g:each in="${studyFields}" var="field">
    90               <g:if test="${field.isFilledInList( studyList )}">
    91                 <tr>
    92                   <td>${field}</td>
    93                   <g:each in="${studyList}" var="studyInstance">
    94                     <td>
    95                                           <g:if test="${studyInstance.fieldExists(field.name)}">
    96                                                 <wizard:showTemplateField field="${field}" entity="${studyInstance}" />
    97                                           </g:if>
    98                                           <g:else>
    99                                                 -
    100                                           </g:else>
    101                                         </td>
    102                   </g:each>
    103                 </tr>
    104               </g:if>
    105             </g:each>
    106 
    107             <!-- Add some extra fields -->
    108             <tr>
    109               <td>Events</td>
    110               <g:each in="${studyList}" var="studyInstance">
    111                 <td>
    112                   <g:if test="${studyInstance.giveEventTemplates()?.size()==0}">
    113                     -
    114                   </g:if>
    115                   <g:else>
    116                                         ${studyInstance.giveEventTemplates().name.join(", ")}
    117                   </g:else>
    118                 </td>
    119               </g:each>
    120             </tr>
    121             <tr>
    122               <td>Sampling events</td>
    123               <g:each in="${studyList}" var="studyInstance">
    124                 <td>
    125                   <g:if test="${studyInstance.giveSamplingEventTemplates()?.size()==0}">
    126                     -
    127                   </g:if>
    128                   <g:else>
    129                    ${studyInstance.giveSamplingEventTemplates().name.join(", ")}
    130                   </g:else>
    131                 </td>
    132               </g:each>
    133             </tr>
    134             <tr>
    135               <td>Public</td>
    136               <g:each in="${studyList}" var="studyInstance">
    137                 <td>
    138                    ${studyInstance.publicstudy}
    139                 </td>
    140               </g:each>
    141             </tr>
    142             <tr>
    143               <td>Owner</td>
    144               <g:each in="${studyList}" var="studyInstance">
    145                 <td>
    146                    ${studyInstance.owner?.username}
    147                 </td>
    148               </g:each>
    149             </tr>
    150             <tr>
    151               <td>Readers</td>
    152               <g:each in="${studyList}" var="studyInstance">
    153                 <td>
    154                   <g:if test="${studyInstance.readers.size() == 0}">
    155                     -
    156                   </g:if>
    157                   <g:else>
    158                     ${studyInstance.readers.username.join( ", " )}
    159                   </g:else>
    160                 </td>
    161               </g:each>
    162             </tr>
    163             <tr>
    164               <td>Writers</td>
    165               <g:each in="${studyList}" var="studyInstance">
    166                 <td>
    167                   <g:if test="${studyInstance.writers?.size()==0}">
    168                     -
    169                   </g:if>
    170                   <g:else>
    171                     ${studyInstance.writers.username.join( ", " )}
    172                   </g:else>
    173                 </td>
    174               </g:each>
    175             </tr>
    176           </table>
    177         </div>
    178 
    179                 <% /*
     51<div class="body" id="studies">
     52        <h1><g:message code="default.show.label" args="[entityName]"/></h1>
     53        <g:if test="${flash.message}">
     54                <div class="message">${flash.message}</div>
     55        </g:if>
     56        <div class="dialog">
     57                <div id="tabs">
     58                        <ul>
     59                                <li><a href="#study">Study Information</a></li>
     60                                <li><a href="<g:createLink action="show_subjects" id="${studyList.id.join(',')}"/>" title="Subjects"><span>Subjects</span></a></li>
     61                                <li><a href="<g:createLink action="show_events_timeline" id="${studyList.id.join(',')}"/>" title="Events timeline"><span>Events timeline</span></a></li>
     62                                <li><a href="<g:createLink action="show_events_table" id="${studyList.id.join(',')}"/>" title="Events table"><span>Events table</span></a></li>
     63                                <li><a href="<g:createLink action="show_assays" id="${studyList.id.join(',')}"/>" title="Assays"><span>Assays</span></a></li>
     64                                <li><a href="<g:createLink action="show_samples" id="${studyList.id.join(',')}"/>" title="Samples"><span>Samples</span></a></li>
     65                                <li><a href="<g:createLink action="show_persons" id="${studyList.id.join(',')}"/>" title="Persons"><span>Persons</span></a></li>
     66                                <li><a href="<g:createLink action="show_publications" id="${studyList.id.join(',')}"/>" title="Publications"><span>Publications</span></a></li>
     67                        </ul>
     68
     69                        <div id="study">
     70                                <table>
     71                                <!-- only show the head section if there are multiple studies -->
     72                                        <g:if test="${multipleStudies}">
     73                                                <thead>
     74                                                <tr>
     75                                                        <th></th>
     76                                                        <g:each in="${studyList}" var="studyInstance">
     77                                                                <th>${studyInstance.title}</th>
     78                                                        </g:each>
     79                                                </tr>
     80                                                </thead>
     81                                        </g:if>
     82                                        <%
     83                                                // Determine a union of the fields from all studies, in order
     84                                                // to show a proper list. We want every field to appear just once,
     85                                                // so the list is filtered for unique values
     86                                                studyFields = studyList[0].giveDomainFields() + studyList*.giveTemplateFields()?.flatten().unique()
     87                                        %>
     88                                <!-- Show all template and domain fields, if filled -->
     89                                        <g:each in="${studyFields}" var="field">
     90                                                <g:if test="${field.isFilledInList( studyList )}">
     91                                                        <tr>
     92                                                                <td>${field}</td>
     93                                                                <g:each in="${studyList}" var="studyInstance">
     94                                                                        <td>
     95                                                                                <g:if test="${studyInstance.fieldExists(field.name)}">
     96                                                                                        <wizard:showTemplateField field="${field}" entity="${studyInstance}"/>
     97                                                                                </g:if>
     98                                                                                <g:else>
     99                                                                                        -
     100                                                                                </g:else>
     101                                                                        </td>
     102                                                                </g:each>
     103                                                        </tr>
     104                                                </g:if>
     105                                        </g:each>
     106
     107                                <!-- Add some extra fields -->
     108                                        <tr>
     109                                                <td>Events</td>
     110                                                <g:each in="${studyList}" var="studyInstance">
     111                                                        <td>
     112                                                                <g:if test="${studyInstance.giveEventTemplates()?.size()==0}">
     113                                                                        -
     114                                                                </g:if>
     115                                                                <g:else>
     116                                                                        ${studyInstance.giveEventTemplates().name.join(", ")}
     117                                                                </g:else>
     118                                                        </td>
     119                                                </g:each>
     120                                        </tr>
     121                                        <tr>
     122                                                <td>Sampling events</td>
     123                                                <g:each in="${studyList}" var="studyInstance">
     124                                                        <td>
     125                                                                <g:if test="${studyInstance.giveSamplingEventTemplates()?.size()==0}">
     126                                                                        -
     127                                                                </g:if>
     128                                                                <g:else>
     129                                                                        ${studyInstance.giveSamplingEventTemplates().name.join(", ")}
     130                                                                </g:else>
     131                                                        </td>
     132                                                </g:each>
     133                                        </tr>
     134                                        <tr>
     135                                                <td>Public</td>
     136                                                <g:each in="${studyList}" var="studyInstance">
     137                                                        <td>
     138                                                                ${studyInstance.publicstudy}
     139                                                        </td>
     140                                                </g:each>
     141                                        </tr>
     142                                        <tr>
     143                                                <td>Owner</td>
     144                                                <g:each in="${studyList}" var="studyInstance">
     145                                                        <td>
     146                                                                ${studyInstance.owner?.username}
     147                                                        </td>
     148                                                </g:each>
     149                                        </tr>
     150                                        <tr>
     151                                                <td>Readers</td>
     152                                                <g:each in="${studyList}" var="studyInstance">
     153                                                        <td>
     154                                                                <g:if test="${studyInstance.readers.size() == 0}">
     155                                                                        -
     156                                                                </g:if>
     157                                                                <g:else>
     158                                                                        ${studyInstance.readers.username.join(", ")}
     159                                                                </g:else>
     160                                                        </td>
     161                                                </g:each>
     162                                        </tr>
     163                                        <tr>
     164                                                <td>Writers</td>
     165                                                <g:each in="${studyList}" var="studyInstance">
     166                                                        <td>
     167                                                                <g:if test="${studyInstance.writers?.size()==0}">
     168                                                                        -
     169                                                                </g:if>
     170                                                                <g:else>
     171                                                                        ${studyInstance.writers.username.join(", ")}
     172                                                                </g:else>
     173                                                        </td>
     174                                                </g:each>
     175                                        </tr>
     176                                </table>
     177                        </div>
     178
     179                        <% /*
    180180                  All other tabs are moved to separate views and are loaded using
    181181                  ajax calls when a tab is opened. See http://jqueryui.com/demos/tabs/#ajax
    182182                */ %>
    183183
    184       </div>
    185     </div>
    186     <br>
    187     <div class="buttons">
    188       <g:form action="delete">
    189         <g:if test="${studyList?.size() == 1}">
    190           <g:set var="studyInstance" value="${studyList[0]}" />
    191           <g:hiddenField name="id" value="${studyInstance?.id}" />
    192           <g:if test="${studyInstance.canWrite(loggedInUser)}">
    193             <span class="button"><g:link class="edit" controller="wizard" params="[jump:'edit']" id="${studyInstance?.id}">${message(code: 'default.button.edit.label', default: 'Edit')}</g:link></span>
    194           </g:if>
    195           <g:if test="${studyInstance.isOwner(loggedInUser)}">
    196             <span class="button"><g:actionSubmit class="delete" action="delete" value="${message(code: 'default.button.delete.label', default: 'Delete')}" onclick="return confirm('${message(code: 'default.button.delete.confirm.message', default: 'Are you sure?')}');" /></span>
    197           </g:if>
    198           </g:if>
    199         <span class="button"><g:link class="backToList" action="list">Back to list</g:link></span>
    200       </g:form>
    201     </div>
    202 
    203   </div>
     184                </div>
     185        </div>
     186        <br>
     187        <div class="buttons">
     188                <g:form action="delete">
     189                        <g:if test="${studyList?.size() == 1}">
     190                                <g:set var="studyInstance" value="${studyList[0]}"/>
     191                                <g:hiddenField name="id" value="${studyInstance?.id}"/>
     192                                <g:if test="${studyInstance.canWrite(loggedInUser)}">
     193                                        <span class="button"><g:link class="edit" controller="wizard" params="[jump:'edit']" id="${studyInstance?.id}">${message(code: 'default.button.edit.label', default: 'Edit')}</g:link></span>
     194                                </g:if>
     195                                <g:if test="${studyInstance.isOwner(loggedInUser)}">
     196                                        <span class="button"><g:actionSubmit class="delete" action="delete" value="${message(code: 'default.button.delete.label', default: 'Delete')}" onclick="return confirm('${message(code: 'default.button.delete.confirm.message', default: 'Are you sure?')}');"/></span>
     197                                </g:if>
     198                        </g:if>
     199                        <span class="button"><g:link class="backToList" action="list">Back to list</g:link></span>
     200                </g:form>
     201        </div>
     202</div>
    204203</body>
    205204</html>
  • trunk/web-app/css/default_style.css

    r1230 r1241  
    435435
    436436/* END :: special select option styles */
     437
     438#facebookConnect {
     439        padding:0px 0px 10px 0px;
     440}
Note: See TracChangeset for help on using the changeset viewer.