Changeset 3853 for peerreviewplugin
- Timestamp:
- 06/17/08 02:31:06 (7 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
peerreviewplugin/branches/2.1-toddler/codereview/peerReviewSearch.py
r717 r3853 20 20 import datetime 21 21 import time 22 import itertools 22 23 23 24 class UserbaseModule(Component): … … 36 37 37 38 def process_request(self, req): 39 40 data = {} 41 38 42 #check permissions 39 43 if req.perm.has_permission('CODE_REVIEW_MGR'): 40 req.hdf['manager'] = 144 data['manager'] = 1 41 45 else: 42 46 req.perm.assert_permission('CODE_REVIEW_DEV') 43 req.hdf['manager'] = 047 data['manager'] = 0 44 48 45 49 #if the doSearch parameter is 'yes', perform the search 46 50 #this parameter is set when someone searches 47 51 if(req.args.get('doSearch') == 'yes'): 48 results = self.performSearch(req );52 results = self.performSearch(req, data); 49 53 #if there are no results - fill the return array 50 54 #with blank data. … … 57 61 noValResult.append("") 58 62 results.append(noValResult) 59 req.hdf['results'] = results;60 req.hdf['doSearch'] = 'yes';63 data['results'] = results; 64 data['doSearch'] = 'yes'; 61 65 62 #sets links for ClearSilver63 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 69 66 #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" 74 71 75 72 #get the database … … 78 75 users = dbBack.getPossibleUsers() 79 76 #sets the possible users for the user combo-box 80 req.hdf['users'] = users77 data['users'] = users 81 78 #creates a year array containing the last 10 82 79 #years - for the year combo-box … … 87 84 years.append(year - i) 88 85 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 91 90 92 91 # ITemplateProvider methods … … 104 103 105 104 #Performs the search 106 def performSearch(self, req ):105 def performSearch(self, req, data): 107 106 #create a code review struct to hold the search parameters 108 107 crStruct = CodeReviewStruct(None) … … 126 125 #store date values for ClearSilver - used to reset values to 127 126 #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; 134 133 135 134 #dates are ints in TRAC - convert search date to int … … 144 143 145 144 selectString = 'Select...' 146 req.hdf['dateSelected'] = fromdate;145 data['dateSelected'] = fromdate; 147 146 #if user has not selected parameter - leave 148 147 #value in struct NULL … … 160 159 db = self.env.get_db_cnx() 161 160 dbBack = dbBackend(db) 161 162 162 #perform search 163 163 results = dbBack.searchCodeReviews(crStruct) peerreviewplugin/branches/2.1-toddler/codereview/templates/peerReviewSearch.html
r3763 r3853 9 9 10 10 <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" /> 13 13 </head> 14 14 … … 43 43 onchange="resetDays(document.getElementById('Month').options[document.getElementById('Month').selectedIndex].value, 44 44 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> 58 58 </select> 59 59 60 60 <span id="DaySpan"> 61 61 <select size="1" name="DateDay1" id="Day" onchange="setDateIndex();"> 62 <option value= 0 selected>Select...</option>62 <option value="0" selected="selected">Select...</option> 63 63 </select> 64 64 </span>, … … 66 66 onchange="resetDays(document.getElementById('Month').options[document.getElementById('Month').selectedIndex].value, 67 67 document.getElementById('Year').options[document.getElementById('Year').selectedIndex].value)"> 68 <option selected value="0">Select...</option>68 <option selected="selected" value="0">Select...</option> 69 69 <option py:for="item in years" value="${item}">${item}</option> 70 70 </select> … … 103 103 </thead> 104 104 <tbody py:with="cls=cycle(('odd', 'even'))" id = "myfilebody"> 105 <py:for each="item in enumerate(results)"105 <py:for each="item in results"> 106 106 <tr py:if="item[2] != ''" class="${cls.next()}"> 107 107 <td><a href="${href.peerReviewView()}?Review=${item[0]}">${item[0]}</a></td> … … 121 121 </tbody> 122 122 </table> 123 <br >123 <br /> 124 124 </py:if> 125 125 … … 127 127 var dateIndexSelected = "01"; 128 128 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}";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}"; 135 135 136 136 setSearchValues(); 137 137 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(/</g, '<');147 nameSelected = nameSelected.replace(/>/g, '>');148 nameSelected = nameSelected.replace(/"/g, '"');149 nameSelected = nameSelected.replace(/&/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 else232 {233 innerHTML += '<option value=' + day + loop + '>' + loop + '</option>\n';234 }235 }236 237 innerHTML += '</select>';238 239 control.innerHTML = innerHTML;240 }241 138 </script> 242 139 <script type="text/javascript" src="${href.chrome('hw/js/peerReviewSearch.js')}"/> 243 140 </body> 244 141 </html>
