[Koha-patches] [PATCH] Add ajax function to return new weeks array in irregularities check: BUG 1842

Ryan Higgins rch at liblime.com
Sun Jul 27 20:25:58 CEST 2008


---
 .../prog/en/modules/serials/subscription-add.tmpl  |   40 ++++++++++++++++++--
 serials/serials_planning_ajax.pl                   |   31 +++++++++++++++
 2 files changed, 67 insertions(+), 4 deletions(-)
 create mode 100755 serials/serials_planning_ajax.pl

diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tmpl
index 134a72a..b048091 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tmpl
@@ -11,6 +11,41 @@ var text = new Array(_("Number"),_("Volume"),_("Issue"),_("Month"),_("Week"),_("
 _("Autumn"),_("Winter"),_("Spring"),_("Summer"),_("Fall"),_("Season"),_("Year"));
 var is_season = 0;
 var is_hemisphere = 1;
+<!-- TMPL_IF NAME="weekarrayjs" -->
+    var weeks = new Array(<!-- TMPL_VAR NAME="weekarrayjs" -->); 
+<!-- /TMPL_IF -->
+function xmlhttpPost(strURL) {
+    var xmlHttpReq = false;
+    var self = this;
+    // Mozilla/Safari
+    if (window.XMLHttpRequest) {
+        self.xmlHttpReq = new XMLHttpRequest();
+    }
+    // IE
+    else if (window.ActiveXObject) {
+        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
+    }
+    self.xmlHttpReq.open('POST', strURL, true);
+    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
+    self.xmlHttpReq.onreadystatechange = function() {
+        if (self.xmlHttpReq.readyState == 4) {
+            updatepage(self.xmlHttpReq.responseText);
+        }
+    }
+    self.xmlHttpReq.send(getquerystring());
+}
+function getquerystring() {
+    var firstdate = document.getElementById("acqui_date").value;
+	qstr = 'start=' + escape(firstdate) ;  
+    return qstr;
+}
+
+function updatepage(str){
+    //document.getElementById("notes").innerHTML = str;
+ 	weeks = eval("(" + str + ")");
+	var titles = weeks;
+}
+
 
 function YMDaToYWDa(S) {
     with (new Date(Date.UTC(S[0], S[1] - 1, S[2]))) {
@@ -548,9 +583,6 @@ function irregularity_check(){
 function irregular_options(periodicity){
     var titles;
     var count;
-<!-- TMPL_IF NAME="weekarrayjs" -->
-    var weeks = new Array(<!-- TMPL_VAR NAME="weekarrayjs" -->); 
-<!-- /TMPL_IF -->
     var months = new Array(_("January"),_("February"),_("March"),_("April"),_("May"),_("June"),_("July"),_("August"),_("September"),_("October"),_("November"),_("December"));
     var seasons = new Array(_("Autumn"),_("Winter"),_("Spring"),_("Summer"),_("Fall"));
     var errortext='';
@@ -918,7 +950,7 @@ window.onload = irregular_order();
            <label for="firstacquidate"> First issue publication date:</label>
             
                 <img src="<!-- TMPL_VAR Name="themelang" -->/lib/calendar/cal.gif" id="button2" style="cursor: pointer;" alt="Show Calendar" title="Show Calendar" />
-                <input type="text" name="firstacquidate" value="<!-- TMPL_VAR name="firstacquidate" -->" size="13" maxlength="10" id="acqui_date" style="border-width: 0px;" />
+                <input type="text" name="firstacquidate" value="<!-- TMPL_VAR name="firstacquidate" -->" size="13" maxlength="10" id="acqui_date" style="border-width: 0px;" onchange='JavaScript:xmlhttpPost("/cgi-bin/koha/serials/serials_planning_ajax.pl"); return false;'  />
                 <!-- both scripts for calendar must follow the input field --> 
                 <script type="text/javascript">
                     Calendar.setup({
diff --git a/serials/serials_planning_ajax.pl b/serials/serials_planning_ajax.pl
new file mode 100755
index 0000000..200371a
--- /dev/null
+++ b/serials/serials_planning_ajax.pl
@@ -0,0 +1,31 @@
+#!/usr/bin/perl 
+
+use strict;
+use warnings;
+use CGI;
+use Date::Calc qw( Add_Delta_Days Weeks_in_Year Week_of_Year Monday_of_Week);
+use C4::Auth;
+use C4::Context;
+use C4::Dates;
+
+my $query = new CGI;
+my ( $user, $cookie, $sessionID, $flags ) = checkauth( $query , 0, {serials => 1} , "intranet");
+if($user) {
+	# using dates in Date::Calc format of (year, month, day) 
+	my @startdate = split( /-/, C4::Dates->new( $query->param('start'))->output('iso'));
+	my $numweeks = $query->param('n');
+	my ($week,$yr) = Week_of_Year(@startdate);
+	my @weeks;
+	my $thisyear=$yr;
+	my @thisweek = @startdate;
+	for ( my $i=$week ; $i<$week+Weeks_in_Year($yr) ; $i++ ) {
+		$thisyear++ if ($i>Weeks_in_Year($yr) );
+		@thisweek = Add_Delta_Days(@thisweek , 7);
+		my $weeknumber = Week_of_Year(@thisweek);
+		my $weekdate =  C4::Dates->new( sprintf("%4d-%02d-%02d", at thisweek),'iso')->output() ;	
+		push @weeks, "$weekdate ( $weeknumber )";
+	}
+	print $query->header;
+	
+	print "[ '" . join("' , '", at weeks) . "' ]";
+}
-- 
1.5.5.GIT




More information about the Koha-patches mailing list