[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