Changeset 3854 for peerreviewplugin

Show
Ignore:
Timestamp:
06/17/08 02:39:56 (7 months ago)
Author:
proofek
Message:

Merging with latest changes added to 2.1-dev 3780:3853

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • peerreviewplugin/branches/2.2-dev/codereview/peerReviewSearch.py

    r717 r3854  
    2020import datetime 
    2121import time 
     22import itertools 
    2223 
    2324class UserbaseModule(Component): 
     
    3637                                         
    3738    def process_request(self, req): 
     39 
     40        data = {} 
     41 
    3842        #check permissions 
    3943        if req.perm.has_permission('CODE_REVIEW_MGR'): 
    40             req.hdf['manager'] = 1 
     44            data['manager'] = 1 
    4145        else: 
    4246            req.perm.assert_permission('CODE_REVIEW_DEV') 
    43             req.hdf['manager'] = 0 
     47            data['manager'] = 0 
    4448             
    4549        #if the doSearch parameter is 'yes', perform the search 
    4650        #this parameter is set when someone searches 
    4751        if(req.args.get('doSearch') == 'yes'): 
    48             results = self.performSearch(req); 
     52            results = self.performSearch(req, data); 
    4953            #if there are no results - fill the return array 
    5054            #with blank data. 
     
    5761                noValResult.append("") 
    5862                results.append(noValResult)         
    59             req.hdf['results'] = results; 
    60             req.hdf['doSearch'] = 'yes'; 
     63            data['results'] = results; 
     64            data['doSearch'] = 'yes'; 
    6165             
    62         #sets links for ClearSilver 
    63         req.hdf['trac.href.peerReviewView'] = self.env.href.peerReviewView() 
    64         req.hdf['trac.href.peerReviewMain'] = self.env.href.peerReviewMain() 
    65         req.hdf['trac.href.peerReviewNew'] = self.env.href.peerReviewNew() 
    66         req.hdf['trac.href.peerReviewSearch'] = self.env.href.peerReviewSearch() 
    67         req.hdf['trac.href.peerReviewOptions'] = self.env.href.peerReviewOptions() 
    68          
    6966        #for the top-right nav links 
    70         req.hdf['main'] = "no" 
    71         req.hdf['create'] = "no" 
    72         req.hdf['search'] = "yes" 
    73         req.hdf['options'] = "no" 
     67        data['main'] = "no" 
     68        data['create'] = "no" 
     69        data['search'] = "yes" 
     70        data['options'] = "no" 
    7471         
    7572        #get the database 
     
    7875        users = dbBack.getPossibleUsers() 
    7976        #sets the possible users for the user combo-box 
    80         req.hdf['users'] = users 
     77        data['users'] = users 
    8178        #creates a year array containing the last 10 
    8279        #years - for the year combo-box 
     
    8784            years.append(year - i) 
    8885 
    89         req.hdf['years'] = years 
    90         return 'peerReviewSearch.cs', None 
     86        data['years'] = years 
     87        data['cycle'] = itertools.cycle 
     88 
     89        return 'peerReviewSearch.html', data, None 
    9190                 
    9291    # ITemplateProvider methods 
     
    104103 
    105104    #Performs the search 
    106     def performSearch(self, req): 
     105    def performSearch(self, req, data): 
    107106        #create a code review struct to hold the search parameters 
    108107        crStruct = CodeReviewStruct(None) 
     
    126125        #store date values for ClearSilver - used to reset values to 
    127126        #search parameters after a search is performed 
    128         req.hdf['searchValues.month'] = month; 
    129         req.hdf['searchValues.day'] = day; 
    130         req.hdf['searchValues.year'] = year; 
    131         req.hdf['searchValues.status'] = status; 
    132         req.hdf['searchValues.author'] = author; 
    133         req.hdf['searchValues.name'] = name; 
     127        data['searchValues_month'] = month; 
     128        data['searchValues_day'] = day; 
     129        data['searchValues_year'] = year; 
     130        data['searchValues_status'] = status; 
     131        data['searchValues_author'] = author; 
     132        data['searchValues_name'] = name; 
    134133 
    135134        #dates are ints in TRAC - convert search date to int 
     
    144143 
    145144        selectString = 'Select...' 
    146         req.hdf['dateSelected'] = fromdate; 
     145        data['dateSelected'] = fromdate; 
    147146        #if user has not selected parameter - leave 
    148147        #value in struct NULL 
     
    160159        db = self.env.get_db_cnx() 
    161160        dbBack = dbBackend(db) 
     161 
    162162        #perform search 
    163163        results = dbBack.searchCodeReviews(crStruct) 
  • peerreviewplugin/branches/2.2-dev/codereview/templates/peerReviewSearch.html

    r3763 r3854  
    99 
    1010  <head> 
    11         <link rel="stylesheet" href="/trac-mysql/chrome/common/css/code.css" type="text/css" media="screen, projector, print" /> 
    12         <link rel="stylesheet" href="/trac-mysql/chrome/common/css/browser.css" type="text/css" media="screen, projector, print" /> 
     11        <link rel="stylesheet" href="${href.chrome('common/css/code.css')}" type="text/css" media="screen, projector, print" /> 
     12        <link rel="stylesheet" href="${href.chrome('common/css/browser.css')}" type="text/css" media="screen, projector, print" /> 
    1313  </head> 
    1414 
     
    4343                        onchange="resetDays(document.getElementById('Month').options[document.getElementById('Month').selectedIndex].value, 
    4444                                        document.getElementById('Year').options[document.getElementById('Year').selectedIndex].value)"> 
    45                         <option value=0>Select...</option> 
    46                         <option value=01>January</option> 
    47                         <option value=02>February</option> 
    48                         <option value=03>March</option> 
    49                         <option value=04>April</option> 
    50                         <option value=05>May</option> 
    51                         <option value=06>June</option> 
    52                         <option value=07>July</option> 
    53                         <option value=08>August</option> 
    54                         <option value=09>September</option> 
    55                         <option value=10>October</option> 
    56                         <option value=11>November</option> 
    57                         <option value=12>December</option> 
     45                        <option value="0">Select...</option> 
     46                        <option value="01">January</option> 
     47                        <option value="02">February</option> 
     48                        <option value="03">March</option> 
     49                        <option value="04">April</option> 
     50                        <option value="05">May</option> 
     51                        <option value="06">June</option> 
     52                        <option value="07">July</option> 
     53                        <option value="08">August</option> 
     54                        <option value="09">September</option> 
     55                        <option value="10">October</option> 
     56                        <option value="11">November</option> 
     57                        <option value="12">December</option> 
    5858                </select> 
    5959         
    6060                <span id="DaySpan"> 
    6161                        <select size="1" name="DateDay1" id="Day" onchange="setDateIndex();"> 
    62                                 <option value=0 selected>Select...</option> 
     62                                <option value="0" selected="selected">Select...</option> 
    6363                        </select> 
    6464                </span>, 
     
    6666                        onchange="resetDays(document.getElementById('Month').options[document.getElementById('Month').selectedIndex].value, 
    6767                                        document.getElementById('Year').options[document.getElementById('Year').selectedIndex].value)"> 
    68                         <option selected value="0">Select...</option> 
     68                        <option selected="selected" value="0">Select...</option> 
    6969                        <option py:for="item in years" value="${item}">${item}</option> 
    7070                </select> 
     
    103103                        </thead> 
    104104                        <tbody py:with="cls=cycle(('odd', 'even'))" id = "myfilebody"> 
    105                                 <py:for each="item in enumerate(results)" 
     105                                <py:for each="item in results"> 
    106106                                        <tr py:if="item[2] != ''" class="${cls.next()}"> 
    107107                                                <td><a href="${href.peerReviewView()}?Review=${item[0]}">${item[0]}</a></td> 
     
    121121                        </tbody> 
    122122                </table> 
    123                 <br
     123                <br /
    124124        </py:if> 
    125125 
     
    127127var dateIndexSelected = "01"; 
    128128 
    129 var monthSelected = "${searchValues.month}"; 
    130 var daySelected = "${searchValues.day}"; 
    131 var yearSelected = "${searchValues.year}"; 
    132 var statusSelected = "${searchValues.status}"; 
    133 var authorSelected = "${searchValues.author}"; 
    134 var nameSelected = "${searchValues.name}"; 
     129var monthSelected = "${searchValues_month}"; 
     130var daySelected = "${searchValues_day}"; 
     131var yearSelected = "${searchValues_year}"; 
     132var statusSelected = "${searchValues_status}"; 
     133var authorSelected = "${searchValues_author}"; 
     134var nameSelected = "${searchValues_name}"; 
    135135 
    136136setSearchValues(); 
    137137 
    138 function setSearchValues() 
    139 { 
    140         var monthSelect = document.getElementById('Month'); 
    141         var daySelect = document.getElementById('Day'); 
    142         var yearSelect = document.getElementById('Year'); 
    143         var authorSelect = document.getElementById('author'); 
    144         var statusSelect = document.getElementById('status'); 
    145         var textField = document.getElementById('name'); 
    146         nameSelected = nameSelected.replace(/&lt;/g, '<'); 
    147         nameSelected = nameSelected.replace(/&gt;/g, '>'); 
    148         nameSelected = nameSelected.replace(/&#34;/g, '"'); 
    149         nameSelected = nameSelected.replace(/&amp;/g, '&'); 
    150         textField.value = nameSelected; 
    151          
    152  
    153         for(var i = 0; i < monthSelect.options.length; i++) 
    154         { 
    155                 if(monthSelect.options[i].value == monthSelected) 
    156                 { 
    157                         monthSelect.options[i].selected = 'true'; 
    158                         break; 
    159                 } 
    160         } 
    161  
    162         for(var i = 0; i < yearSelect.options.length; i++) 
    163         { 
    164                 if(yearSelect.options[i].value == yearSelected) 
    165                 { 
    166                         yearSelect.options[i].selected = 'true'; 
    167                         break; 
    168                 } 
    169         } 
    170  
    171         dateIndexSelected = daySelected; 
    172         resetDays(monthSelected, yearSelected); 
    173  
    174         for(var i = 0; i < authorSelect.options.length; i++) 
    175         { 
    176                 if(authorSelect.options[i].value == authorSelected) 
    177                 {        
    178                         authorSelect.options[0].selected = 'false'; 
    179                         authorSelect.options[i].selected = 'true'; 
    180                         break; 
    181                 } 
    182         } 
    183         for(var i = 0; i < statusSelect.options.length; i++) 
    184         { 
    185                 if(statusSelect.options[i].value == statusSelected) 
    186                 { 
    187                         statusSelect.options[0].selected = 'false'; 
    188                         statusSelect.options[i].selected = 'true'; 
    189                         break; 
    190                 } 
    191         } 
    192 } 
    193  
    194 function setDateIndex() 
    195 { 
    196         dateIndexSelected = (document.getElementById('Day')).value; 
    197         document.getElementById('dayHolder').value = dateIndexSelected; 
    198 } 
    199  
    200 function resetDays(month, year) 
    201 { 
    202         var numDays = 0; 
    203         var date = new Date(); 
    204         date.setFullYear(year, month - 1, 31); 
    205         numDays = date.getDate(); 
    206         if(numDays < 4) 
    207         { 
    208                 numDays = 31 - numDays; 
    209         } 
    210         setOptionText(document.getElementById('DaySpan'), numDays); 
    211         setDateIndex(); 
    212 } 
    213  
    214 function setOptionText(control, numDays) 
    215 { 
    216         var innerHTML = '<select name=\"DateDay1\" id=\"Day\" onChange=\"setDateIndex();\">' 
    217         innerHTML += '<option value = \"0\">Select...</option>'; 
    218         var day = ''; 
    219  
    220         for(var loop=1; loop <= numDays; loop++) 
    221         { 
    222                 day = ''; 
    223                 if(loop < 10) 
    224                 { 
    225                         day = '0'; //add a 0 to day so that all days are 2 digits - 01, 02, etc. 
    226                 } 
    227                 if(day + '' + loop == dateIndexSelected) 
    228                 { 
    229                         innerHTML += '<option selected value=' + day + loop + '>' + loop + '</option>\n'; 
    230                 } 
    231                 else 
    232                 { 
    233                         innerHTML += '<option value=' + day + loop + '>' + loop + '</option>\n'; 
    234                 } 
    235         } 
    236  
    237         innerHTML += '</select>'; 
    238          
    239         control.innerHTML = innerHTML; 
    240 } 
    241138</script> 
    242  
     139<script type="text/javascript" src="${href.chrome('hw/js/peerReviewSearch.js')}"/> 
    243140  </body> 
    244141</html>