From e9a0602f399d455d3f8c6fc5064dd576448565af Mon Sep 17 00:00:00 2001 From: Matthew Dudley Date: Wed, 7 Oct 2015 12:53:45 -0600 Subject: [PATCH 01/55] First pass CSS Merge --- ajax_forms.php | 18 +- ajax_htmldata.php | 60 +- css/style.css | 824 +++++++++++++++--- css/thickbox.css | 13 +- images/arrowdown.png | Bin 0 -> 184 bytes images/arrowdown_sel.png | Bin 0 -> 184 bytes images/arrowup.png | Bin 0 -> 183 bytes images/arrowup_sel.png | Bin 0 -> 191 bytes images/authpage.gif | Bin 0 -> 6086 bytes images/back-header.jpg | Bin 0 -> 328 bytes images/bg-diagonal-stripes.png | Bin 0 -> 214 bytes images/bg-gray-texture.jpg | Bin 0 -> 44031 bytes images/change/coral-cancellation.png | Bin 0 -> 2075 bytes images/change/coral-change.gif | Bin 1321 -> 1119 bytes images/change/coral-licensing.gif | Bin 1044 -> 2032 bytes images/change/coral-licensing.png | Bin 0 -> 1966 bytes images/change/coral-main.gif | Bin 1109 -> 1420 bytes images/change/coral-main.png | Bin 0 -> 1923 bytes images/change/coral-organizations.gif | Bin 1122 -> 2581 bytes images/change/coral-organizations.png | Bin 0 -> 2228 bytes images/change/coral-resources.gif | Bin 1101 -> 2511 bytes images/change/coral-resources.png | Bin 0 -> 2012 bytes images/change/coral-usage.gif | Bin 811 -> 2163 bytes images/change/coral-usage.png | Bin 0 -> 2225 bytes images/favicon.ico | Bin 0 -> 1150 bytes images/licensingtitle.gif | Bin 27565 -> 6217 bytes images/licensingtitle.jpg | Bin 0 -> 12778 bytes images/login.gif | Bin 0 -> 1487 bytes images/menu/menu-admin-on.gif | Bin 550 -> 855 bytes images/menu/menu-admin-over.gif | Bin 543 -> 855 bytes images/menu/menu-admin.gif | Bin 844 -> 855 bytes images/menu/menu-calendar-on.gif | Bin 402 -> 972 bytes images/menu/menu-calendar-over.gif | Bin 658 -> 967 bytes images/menu/menu-calendar.gif | Bin 976 -> 972 bytes images/menu/menu-expressioncomparison-on.gif | Bin 1286 -> 1313 bytes .../menu/menu-expressioncomparison-over.gif | Bin 1290 -> 1310 bytes images/menu/menu-expressioncomparison.gif | Bin 1432 -> 1313 bytes images/menu/menu-home-on.gif | Bin 554 -> 751 bytes images/menu/menu-home-over.gif | Bin 763 -> 751 bytes images/menu/menu-home.gif | Bin 832 -> 751 bytes images/menu/menu-licensesinprogress-on.gif | Bin 1151 -> 955 bytes images/menu/menu-licensesinprogress-over.gif | Bin 1155 -> 955 bytes images/menu/menu-licensesinprogress.gif | Bin 1301 -> 955 bytes images/menu/menu-myqueue-on.gif | Bin 0 -> 1039 bytes images/menu/menu-myqueue-over.gif | Bin 0 -> 957 bytes images/menu/menu-myqueue.gif | Bin 0 -> 1039 bytes images/menu/menu-newlicense-on.gif | Bin 729 -> 990 bytes images/menu/menu-newlicense-over.gif | Bin 949 -> 990 bytes images/menu/menu-newlicense.gif | Bin 1070 -> 990 bytes images/menu/menu-newresource-on.gif | Bin 0 -> 646 bytes images/menu/menu-newresource-over.gif | Bin 0 -> 646 bytes images/menu/menu-newresource.gif | Bin 0 -> 646 bytes index.php | 6 +- js/forms/licenseForm.js | 1 + js/forms/signatureForm.js | 1 + license.php | 16 +- not_available.php | 2 +- templates/header.php | 19 +- 58 files changed, 799 insertions(+), 161 deletions(-) create mode 100644 images/arrowdown.png create mode 100644 images/arrowdown_sel.png create mode 100644 images/arrowup.png create mode 100644 images/arrowup_sel.png create mode 100644 images/authpage.gif create mode 100644 images/back-header.jpg create mode 100644 images/bg-diagonal-stripes.png create mode 100644 images/bg-gray-texture.jpg create mode 100644 images/change/coral-cancellation.png create mode 100644 images/change/coral-licensing.png create mode 100644 images/change/coral-main.png create mode 100644 images/change/coral-organizations.png create mode 100644 images/change/coral-resources.png create mode 100644 images/change/coral-usage.png create mode 100644 images/favicon.ico create mode 100644 images/licensingtitle.jpg create mode 100644 images/login.gif create mode 100644 images/menu/menu-myqueue-on.gif create mode 100644 images/menu/menu-myqueue-over.gif create mode 100644 images/menu/menu-myqueue.gif create mode 100644 images/menu/menu-newresource-on.gif create mode 100644 images/menu/menu-newresource-over.gif create mode 100644 images/menu/menu-newresource.gif diff --git a/ajax_forms.php b/ajax_forms.php index 8594d72..b29048b 100644 --- a/ajax_forms.php +++ b/ajax_forms.php @@ -42,19 +42,19 @@
- +
- + - + - - + +
License

License



- +
@@ -110,8 +110,8 @@
@@ -716,11 +716,11 @@ }else{ //calculate which arrows to show for reordering if ($rowNumber == "1"){ - echo ""; + echo ""; }else if($rowNumber == $rowCount){ - echo ""; + echo ""; }else{ - echo " "; + echo " "; } echo "" . nl2br($expressionNote->note) . ""; echo "edit"; diff --git a/ajax_htmldata.php b/ajax_htmldata.php index ec8d737..233b1eb 100644 --- a/ajax_htmldata.php +++ b/ajax_htmldata.php @@ -41,16 +41,16 @@ ?> -
+
shortName; ?> canEdit()){?> - edit license | remove license + Edit License | Remove License "; + echo "
"; //make sure they have org module installed before we give them a link to view the organization $config = new Configuration; @@ -58,7 +58,7 @@ if ($config->settings->organizationsModule == 'Y'){ $util = new Utility(); - echo $license->getOrganizationName() . " edit organization"; + echo $license->getOrganizationName() . " Edit Organization"; if ($license->consortiumID) { echo "
" . $license->getConsortiumName(); @@ -330,10 +330,11 @@ //print out page selectors if ($totalRecords > $numberOfRecords){ + echo "
"; if ($pageStart == "1"){ - $pagination .= "<< "; + $pagination .= " "; }else{ - $pagination .= "<< "; + $pagination .= " "; } $page = floor($pageStart/$numberOfRecords) + 1; //now determine the starting page - we will display 3 prior to the currently selected page @@ -365,23 +366,24 @@ } if ($pageStart == $nextPageStarts){ - $pagination .= ">> "; + $pagination .= " "; }else{ - $pagination .= ">> "; + $pagination .= " "; } echo $pagination; + echo "
"; } else { - echo "
"; + echo "
"; } ?> - - - - + + + + - -
Name 
Publisher / Provider 
Consortium 
Status 
Name 
Publisher / Provider 
Consortium 
Status 
+ + "; + echo "
"; + echo "\n
" . $expressionTypeArray['document'] . "
"; if ($user->canEdit()){ echo "\n
" . $expressionTypeArray['document'] . "view / edit license  view / edit " . strtolower($expressionType->noteType) . " notes  view document
"; }else{ - echo "\n
view license  view document
"; + echo "\n
View License  View Document
"; } - echo "
"; + echo "
"; if ($expressionTypeArray['documentText']){ - echo "Document Text:
" . nl2br($expressionTypeArray['documentText']) . "
"; + echo "Document Text:

" . nl2br($expressionTypeArray['documentText']) . "
"; } @@ -634,7 +636,7 @@ foreach($etArray as $expressionTypeArray){ - echo "\n" . $expressionTypeArray['document'] . " view license"; + echo "\n" . $expressionTypeArray['document'] . " View License"; if ($expressionTypeArray['documentText']){ $documentText = $expressionTypeArray['documentText']; @@ -765,15 +767,15 @@ -
Name.gif' border=0> .gif' border=0>
-
Type.gif' border=0> .gif' border=0>
-
Effective Date.gif' border=0> .gif' border=0>
-
Signatures.gif' border=0> .gif' border=0>
+
Name.png' border=0> .png' border=0>
+
Type.png' border=0> .png' border=0>
+
Effective Date.png' border=0> .png' border=0>
+
Signatures.png' border=0> .png' border=0>
-
Name.gif' border=0> .gif' border=0>
-
Type.gif' border=0> .gif' border=0>
-
Effective Date.gif' border=0> .gif' border=0>
-
Signatures.gif' border=0> .gif' border=0>
+
Name.png' border=0> .png' border=0>
+
Type.png' border=0> .png' border=0>
+
Effective Date.png' border=0> .png' border=0>
+
Signatures.png' border=0> .png' border=0>
diff --git a/css/style.css b/css/style.css index 5db97f3..aaa0d63 100644 --- a/css/style.css +++ b/css/style.css @@ -1,29 +1,46 @@ +* { + padding: 0; + margin: 0; + border-spacing: 0; +} + html { height: 100%; margin: 0; - padding: 0 + padding: 0; + -webkit-font-smoothing: antialiased; } body { height: 100%; text-decoration: none; - color: #2c3c42; - font-family: "arial"; - font-size: 10pt; - font-weight: heavy; - background: #FFFFFF; + color: #666; + font-family: Arial, sans-serif; + font-size: 14px; + font-weight: 30; + background: #E7E8E8; margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */ padding: 0; text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */ - + background: #E7E8E8 url(../images/bg-gray-texture.jpg) repeat top left; + -webkit-font-smoothing: antialiased; } .wrapper { - min-height: 100%; - height: auto !important; - height: 100%; margin: 0 auto -2em; + height; 120px; + background-image: url("../images/back-header.jpg"); + background-repeat: repeat-x; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +table:nth-of-type(1) td { + padding-top: 0; } .push { @@ -31,11 +48,12 @@ body { } .footer { - height: 2em; + height: 3em; font-size:80%; - color:#526972; + color:red; text-align:center; - width:100%; + width:900px; + font-style: italic; } @@ -47,7 +65,6 @@ a.smallLink {font-size:95%; } span.smallText{font-size:90%;} span.redText{color:red;} -span.span_AttachmentNumber{font-size:small;font-weight:normal; color:gray} .space { line-height: 1 em; @@ -63,18 +80,53 @@ select option { color: #3D545D; font-family: "arial"; font-size: 8pt; font-weigh input, select, multiple, textarea{color: #3D545D; font-family: "arial"; font-size: 8pt; font-weight: medium;} -table.titleTable {width:900px;background-image:url('../images/licensingtitle.gif');background-repeat:no-repeat;height:87px;} -table.headerTable {width:900px;min-height:40px;background-image:url('../images/header.gif');background-repeat:no-repeat;text-align:left} +table.headerTable { + padding: 1px; + width: 900px; + min-height:40px; + background: none !important; + border-collapse: collapse; +} .headerText {font-size:125%;font-weight:bold; } .titleText {font-size:130%;font-weight:bold; } -span.searchLetter{margin:0px;padding-left:1.5px;padding-right:1.5px;background-color:white;} -span.searchLetterSelected{margin:0px;padding-left:1.5px;padding-right:1.5px;background-color: #e0dfe3;} -span.searchLetterSelected a:focus{color:#3D545D;} -span.searchLetterSelected a:active{color:#3D545D;} +hr { + border:0; + border-bottom: 1px solid #e0dfe3; + height: 0; + width: auto !important; + background: #e0dfe3; +} + +span.searchLetter { + margin: 0px; + padding-left: 1px; + padding-right: 1px; + color: #fff; + font-family: Courier, monospace; +} + +span.searchLetter a { + color: #fff; +} +span.searchLetterSelected { + margin: 0px; + padding-left: 1px; + padding-right: 1px; + background-color: #A9D0E0; + color: #fff; +} +span.searchLetter a:hover { + text-decoration: none; + background-color: #4d4d4d; + margin: 0px; +} + +span.searchLetterSelected a:focus{color:#3D545D;} +span.searchLetterSelected a:active{color:#3D545D;} /* The following is used for expression comparison page - due to IE issues *************************/ @@ -103,8 +155,8 @@ ul.tabs li{ display: table-cell; float: left; position: relative; - width:130px; - height: 19px; + width: 150px; + height: 40px; } ul.tabs a{ @@ -123,12 +175,9 @@ ul.coraldropdown{ position: absolute; z-index: 999; top: 100%; - width: 130px; + width: 154px; display: none; left: 0; - border: 1px solid #b8cee4; - -moz-border-radius: 1px; - -webkit-border-radius: 1px; } ul.coraldropdown ul.coraldropdown{ @@ -143,20 +192,27 @@ ul.coraldropdown li{ position: relative; list-style: none; display: block; - height: 23px; - border-top: 1px solid #e2ebf4; + height: 40px; + width: 154px; + border-top: solid 1px #5a5a5a; +} + +ul.coraldropdown li:first-child { + border-top: solid 1px #6195B2; } -ul.coraldropdown li a{ +ul.coraldropdown li a { display: block; - line-height:23px; - background-color:#f6f9fb; - background-repeat:no-repeat; + line-height: 23px; + background-color: #4d4d4d; + background-repeat: no-repeat; + padding-left: 0px; } ul.coraldropdown li a:hover{ -background-color:white; + background-color: #1b76a9; + cursor: pointer; } @@ -173,36 +229,46 @@ table.dataTable { max-width:895px; width:895px; font-size:90%; + margin-top: 11px; + margin-bottom: 10px; + text-align: left; } table.dataTable td { margin: 0; - padding: 2px 3px 2px 2px; + padding: 6px; border-width: 1px 1px 0 0; border-style: solid; border-color: #e0dfe3; - background-color: white; -moz-border-radius: 0px; + vertical-align: middle; + background-color: #f3f3f3; } table.dataTable td.alt { margin: 0; - padding: 2px 3px 2px 2px; - border-width: 1px 1px 0 0; + padding: 6px; + -width: 1px 1px 0 0; border-style: solid; border-color: #e0dfe3; - background-color: #f5f8fa; + background-color: #fff; -moz-border-radius: 0px; + vertical-align: middle; } table.dataTable th { margin: 0; - padding: 2px 3px 2px 2px; + padding: 6px; border-width: 1px 1px 0 0; border-style: solid; - border-color: #e0dfe3; - background-color: white; + border-color: #C9C9C9; + background-color: #CAD7E1; -moz-border-radius: 0px; + vertical-align: middle; + font-weight: 300; + color: #000; + background: rgba(200, 200, 200, 0.5) url(../images/bg-diagonal-stripes.png) repeat top left !important; + border-bottom: 1px solid #C9C9C9 !important; } table.dataTable td.agreement { background-color:#fdf2e7; } @@ -213,43 +279,53 @@ table.dataTable td.archiveold { background-color:#f2f1f1; } table.dataTable tr {vertical-align: top;} +.sidemenu { + background-color: #1b77aa; + width: 120px; + vertical-align: top; + text-align: left; + font-size: 12px; + color: #fff; +} +.sidemenu a:link { + text-decoration: none; + color: #fff; +} -.sidemenu{ - background-color: white; - border-right: 1px solid #dad5c9; - border-top: 1px solid #dad5c9; - width: 99px; - vertical-align: top; - text-align: left; +.sidemenu a:hover { + text-decoration: none; + color: #ccc; } -.sidemenu div{ - padding: 8px 0px 8px 8px; - border-bottom: 1px solid #dad5c9; - font-weight:bold; +.sidemenu span.icon{ + display: none; } .sidemenuselected{ - padding: 8px 0px 8px 8px; - border-bottom: 1px solid #dad5c9; - border-left: 1px solid #dad5c9; - background-color: white; + padding: 10px; + border-bottom: 1px solid #1b77aa; + background-color: #DAE6EA; + width: 150px !important; } -.sidemenuunselected{ - padding: 8px 0px 8px 8px; - border-bottom: 1px solid #dad5c9; - border-left: 1px solid #dad5c9; - background-color: #f2f5f7; + +.sidemenuselected:last-child { + border-bottom: 1px solid #DAE6EA ; +} + +.sidemenuunselected { + padding: 10px; + border-bottom: 1px solid #5295ba; + width: 150px !important; +} + +.sidemenuselected a { + color: #1b77aa !important; } + .mainContent{ - padding: 8px; - background-color: white; + background-color: #f9fafb; text-align:left; - border-top: 1px solid #dad5c9; - border-right: 1px solid #dad5c9; - border-bottom: 1px solid #dad5c9; - background-color: white; vertical-align: top; - + border: solid 1px #e0dfe3; } @@ -260,39 +336,48 @@ table.verticalFormTable { border-color: #e0dfe3; border-collapse: collapse; border-spacing: 0; - font-size:90%; - width:777px; + width: 100%; + font-size: 90%; + margin-top: 11px; + margin-bottom: 10px; } table.verticalFormTable td { margin: 0; - padding: 3px 3px 3px 3px; + padding: 6px; border-width: 1px 1px 0 0; border-style: solid; border-color: #e0dfe3; - background-color: white; -moz-border-radius: 0px; + vertical-align: middle; + background-color: #f3f3f3; } table.verticalFormTable td.alt { margin: 0; - padding: 3px 3px 3px 3px; + padding: 6px; border-width: 1px 1px 0 0; border-style: solid; border-color: #e0dfe3; - background-color: #f5f8fa; + background-color: #fff; -moz-border-radius: 0px; + vertical-align: middle; } table.verticalFormTable th { margin: 0; - padding: 2px 3px 2px 2px; + padding: 6px; border-width: 1px 1px 0 0; border-style: solid; - border-color: #e0dfe3; - background-color: #e5ebef; + border-color: #C9C9C9; + background-color: #CAD7E1; -moz-border-radius: 0px; + vertical-align: middle; + font-weight: 300; + color: #000; + background: rgba(200, 200, 200, 0.5) url(../images/bg-diagonal-stripes.png) repeat top left !important; + border-bottom: 1px solid #C9C9C9 !important; } @@ -301,9 +386,6 @@ table.verticalFormTable tr { } -table.verticalFormTable td.agreement { - background-color:#fdf2e7; -} table.verticalFormTable td.archive { background-color:#ebecec; @@ -321,14 +403,10 @@ table.noBorder td { border:0; } div.thickboxDiv{display:none;} table.thickboxTable{ - background-image:url('../images/title.gif'); - background-repeat:no-repeat; - padding:6px; + padding:6px; text-decoration: none; color: #2c3c42; - font-family: "arial"; - font-size: 8pt; - font-weight: heavy; + font-size: 10px } table.thickboxTable td{ @@ -386,9 +464,9 @@ input.dp-applied { table.borderedFormTable { - border-width: 0 0 1px 1px; + border-width: 0; border-style: solid; - border-color: #e0dfe3; + border-color: #5295ba; border-collapse: collapse; border-spacing: 0; font-size:90%; @@ -399,34 +477,32 @@ table.borderedFormTable td { padding:3px; border-width: 1px 1px 0 0; border-style: solid; - border-color: #e0dfe3; - background-color: white; + border-color: #6195B2; + background-color: #1B77AA; -moz-border-radius: 0px; } table.borderedFormTable td.alt { margin:3px; padding:3px; - border-width: 1px 1px 0 0; - border-style: solid; - border-color: #e0dfe3; + border: solid 1px #e0dfe3; background-color: #f4f8fc; -moz-border-radius: 0px; } table.borderedFormTable td.searchRow { - margin:3px; - padding:3px; - border-width: 1px 1px 0 0; - border-style: solid; - border-color: #e0dfe3; - background-image:url('../images/searchbar.gif'); - background-repeat:no-repeat; - background-color: white; + margin: 3px; + padding: 10px; + background-color: #1B77AA; -moz-border-radius: 0px; } +table.borderedFormTable td.searchRow label b { + color: #fff; + font-weight: 100; + font-size: 11px; +} table.borderedFormTable th { margin:3px; @@ -439,3 +515,549 @@ table.borderedFormTable th { } table.borderedFormTable tr {vertical-align: top;} + +.titleTable { + height: 120px; + /*-*/margin-bottom: 25px; +} + +.titleTable td { + /*-*/height: 40px !important; + /*-*/padding-top: 20px !important; +} + +.titleTable td a { + /*-*/padding-left: 0px; +} + +.titleTable ul.tabs { + padding-right: 15px; +} + +.titleTable tr:first-child td div { + padding-right: 20px; +} + +.titleTable tr:first-child td div a:hover { + color: #ccc; +} + +#menu-end { + display: none; +} + +.noBorder > tbody > tr > td:nth-child(1) { + /*-*/width: 100px !important; + /*-*/padding-bottom: 20px; + /*-*/padding-left: 20px; +} + +a.newSearch:hover { + color: #ccc; +} + +a#showMoreOptions:hover { + color: #ccc; +} + +#sidebar-link-bottom { + padding: 10px; + float: left; +} + +#div_searchName { + margin-left: 0 !important; + margin-top: 6px; +} + +#div_searchISBNOrISSN { + margin-left: 0 !important; + margin-top: 6px; +} + +#div_searchFund { + margin-left: 0 !important; + margin-top: 6px; +} + +#div_searchID { + margin-left: 0 !important; + margin-top: 6px; +} + +#div_searchResourceNote { + margin-left: 0 !important; + margin-top: 6px; +} + +.searchButton { + text-transform: uppercase; +} + +#searchResourceIDButton { + text-transform: uppercase; +} + +#searchCreateDateEnd { + margin-left: 7px; + margin-bottom: 10px; +} + +img[src*="menu-bar.gif"] { + display: none; +} + +img[src*="arrowup.png"] { + padding-left: 6px; +} + +.noBorderTable td { + vertical-align: middle !important; +} + +/*--- Table Column Widths ---*/ + +table.dataTable th:nth-of-type(1) { + min-width: 36px; +} + +table.dataTable th:nth-of-type(2) { + min-width: 250px; +} + +table.dataTable th:nth-of-type(3) { + min-width: 68px; +} + +table.dataTable th:nth-of-type(4) { + min-width: 100px; +} + +table.dataTable th:nth-of-type(5) { + min-width: 120px; +} + +table.dataTable th:nth-of-type(6) { + min-width: 68px; +} + +/*-----*/ + +#div_searchResults > span:nth-child(2) { + padding-right: 20px; +} + +a.setPage:hover { + text-decoration: none; + color: #ccc; +} + +.noBorderTable tr td { + background: none; + background-color: transparent !important; +} + +/*--- Links with Icons ---*/ + +a.newSearch:before { + font-family: FontAwesome; + content: "\f00e"; + font-size: 11px; + margin-right: 3px; +} + +a.newSearch { + text-decoration: none; + text-transform: capitalize; + font-size: 12px; +} + +a.newSearch:hover { + color: #ccc; +} + +a#logout:before { + font-family: FontAwesome; + content: "\f007"; + font-size: 11px; + margin-right: 3px; +} + +a#logout { + text-decoration: none; + text-transform: capitalize; + font-size: 12px; + position: relative; + top: 4px; + left: -4px; +} + +a#logout:hover { + color: #ccc; +} + +a#showMoreOptions:before { + font-family: FontAwesome; + content: "\f055"; + font-size: 11px; + margin-right: 3px; +} + +a#showMoreOptions { + text-decoration: none; + text-transform: capitalize; + font-size: 12px; +} + +a#showMoreOptions:hover { + color: #ccc; +} + +#print-view a:before { + font-family: FontAwesome; + content: "\f02f"; + font-size: 11px; + margin-right: 3px; +} + +#print-view a { + text-decoration: none; + text-transform: capitalize; + font-size: 12px; +} + +#print-view a:hover { + color: #ccc; +} + +/*--- Licensing Side Menu Icons ---*/ + +a.showDocuments:before { + font-family: FontAwesome; + content: "\f15c"; + font-size: 11px; + margin-right: 5px; +} + +a.showDocuments { + text-decoration: none; + text-transform: capitalize; + font-size: 12px; +} + +a.showDocuments:hover { + color: #ccc; +} + +a.showExpressions:before { + font-family: FontAwesome; + content: "\f0fe"; + font-size: 11px; + margin-right: 5px; +} + +a.showExpressions { + text-decoration: none; + text-transform: capitalize; + font-size: 12px; +} + +a.showExpressions:hover { + color: #ccc; +} + +a.showAttachments:before { + font-family: FontAwesome; + content: "\f0c6"; + font-size: 11px; + margin-right: 5px; +} + +a.showAttachments { + text-decoration: none; + text-transform: capitalize; + font-size: 12px; +} + +a.showAttachments:hover { + color: #ccc; +} + +/*--- Licensing Expression Comparison Section Icons ---*/ + +a#view-license:before { + font-family: FontAwesome; + content: "\f06e"; + font-size: 11px; + margin-right: 5px; +} + +a#view-license { + text-decoration: none; + text-transform: capitalize; + font-size: 12px; +} + +a#view-license:hover { + color: #ccc; +} + +a#view-doc:before { + font-family: FontAwesome; + content: "\f152"; + font-size: 11px; + margin-right: 5px; + margin-left: 10px; +} + +a#view-doc { + text-decoration: none; + text-transform: capitalize; + font-size: 12px; +} + +a#view-doc:hover { + color: #ccc; +} + +/*---------------*/ + +td.searchRow > b { + color: #fff; + font-weight: normal; + position: relative; + top: 6px; +} + +td.searchRow input, +td.searchRow select, +td.searchRow multiple, +td.searchRow textarea { + margin-top: 5px; +} + +#div_additionalSearch > table > tbody > tr:nth-child(3) > td a.dp-choose-date { + margin-top: 5px; +} + +#span_resourceName { + padding: 25px 20px; + padding-top: 0; +} + +.span_AttachmentNumber { + color: #FFF654; + margin-left: 0px !important; +} + +.sidemenuselected .span_AttachmentNumber { + color: #666672; +} + +.span_AttachmentNumber { + font-size: 85%; +} + +.resource_tab_content { + width: 630px !important; +} + +.sidemenu { + width: 170px; + float: left; +} + +.mainContent { + width: 680px; + padding: 15px; + padding-top: 10px !important; +} + +.linedFormTable { + width: 430px !important; +} + +.rightPanel { + text-align: left; +} + +div.rightPanelLink { + margin: 0; + font-size: 12px; +} + +div.rightPanelHeader { + color: #1B76A9; + margin-bottom: 5px; +} + +#title-search { + padding: 20px; + padding-top: 0; +} + +input[type="button"]:hover { + cursor: pointer; +} + +table.surroundBox table.noBorder { + margin: 15px !important; +} + +#div_licenseForm table.thickboxTable input[type="button"] { + color: #FFFFFF; + font-family: "Arial", sans-serif; + font-size: 11px; + font-weight: normal; + background: #1b76a9; + border: none; + padding: 5px 10px; + text-transform: capitalize; +} + +/*--- My Queue Page Side Menu ---*/ + +a#OutstandingTasks:before { + font-family: FontAwesome; + content: "\f192"; + font-size: 11px; + margin-right: 5px; +} + +a#OutstandingTasks { + text-decoration: none; + text-transform: capitalize; + font-size: 12px; +} + +a#OutstandingTasks:hover { + color: #ccc; +} + +a#SavedRequests:before { + font-family: FontAwesome; + content: "\f0fe"; + font-size: 11px; + margin-right: 5px; +} + +a#SavedRequests { + text-decoration: none; + text-transform: capitalize; + font-size: 12px; +} + +a#SavedRequests:hover { + color: #ccc; +} + +a#SubmittedRequests:before { + font-family: FontAwesome; + content: "\f045"; + font-size: 11px; + margin-right: 5px; +} + +a#SubmittedRequests { + text-decoration: none; + text-transform: capitalize; + font-size: 12px; +} + +a#SubmittedRequests:hover { + color: #ccc; +} + +.span_OutstandingTasksNumber { + color: #FFF654; + font-size: 85%; + margin-left: 15px !important; +} + +.span_SubmittedRequestsNumber { + color: #FFF654; + font-size: 85%; + margin-left: 15px !important; +} + +.span_SavedRequestsNumber { + color: #FFF654; + font-size: 85%; + margin-left: 15px !important; +} + +.selected .span_OutstandingTasksNumber { + color: #666672; + font-size: 85%; + margin-left: 15px !important; +} + +.selected .span_SubmittedRequestsNumber { + color: #666672; + font-size: 85%; + margin-left: 15px !important; +} + +.selected .span_SavedRequestsNumber { + color: #666672; + font-size: 85%; + margin-left: 15px !important; +} + +#print-view a.helpfulLink { + text-decoration: underline !important; +} + +a.helpfulLink { + text-decoration: underline !important; +} + +#pagination-div { + vertical-align: bottom; + text-align: left; + clear: both; + margin-top: 12px; +} + +#pagination-empty-div { + height: 29px; +} + +#records-per-page { + float: left; + clear: both; +} + +/*--- Login Form Inline with Search Body ---*/ + +#licensing #login-form { + text-align: center; + width: 451px; +} + +#TB_ajaxContent #login-form { + text-align: center; + width: 451px; +} + +/*----------*/ + +.below-title { + padding-top: 10px !important; +} + +#TB_window { + width: auto; +} + +#license-form-title { + width: auto !important; + margin: 0; + padding: 6px; + border-width: 1px 0 0 0; + border-style: solid; + border-color: #e6e5e9; + background-color: #cad7e1; + -moz-border-radius: 0px; + background: rgba(200, 200, 200, 0.5) url(../images/bg-diagonal-stripes.png) repeat top left !important; +} diff --git a/css/thickbox.css b/css/thickbox.css index a491b9e..daa8b0a 100644 --- a/css/thickbox.css +++ b/css/thickbox.css @@ -1,7 +1,11 @@ /* ----------------------------------------------------------------------------------------------------------------*/ /* ---------->>> global settings needed for thickbox <<<-----------------------------------------------------------*/ /* ----------------------------------------------------------------------------------------------------------------*/ -*{padding: 0; margin: 0;} +* { + padding: 0; + margin: 0; + border-spacing: 0; +} /* ----------------------------------------------------------------------------------------------------------------*/ /* ---------->>> thickbox specific link and font settings <<<------------------------------------------------------*/ @@ -57,6 +61,7 @@ text-align:left; top:50%; left:50%; + width: auto !important; } * html #TB_window { /* ie6 hack */ @@ -109,10 +114,14 @@ margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = d overflow:auto; text-align:left; line-height:1.4em; + height: auto !important; + width: auto !important; } #TB_ajaxContent.TB_modal{ - padding:15px; + padding: 10px; + width: auto !important; + height: auto !important; } #TB_ajaxContent p{ diff --git a/images/arrowdown.png b/images/arrowdown.png new file mode 100644 index 0000000000000000000000000000000000000000..6b3a006660c8e0c96e98f5e98820256224013c5e GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XqC8z3Ln>}1efj$J?%4we9vo_ry_3u&G?!}1y@}dhYR=5u%*|X@(9h{nV)TG*ZqNV!|I=T@ z?dP4X`Q3|o@06JdS{q-o2_^_TFl3zaQJC7cM*2vC)Ah!KY%>`SJIJ49d9?dPl1{`M f+io2Ofdq!@fAr_n$<15^w1vUb)z4*}Q$iB}9k4%( literal 0 HcmV?d00001 diff --git a/images/arrowup.png b/images/arrowup.png new file mode 100644 index 0000000000000000000000000000000000000000..2106ace85a488b9035b7285e71b8b8ab93d9f932 GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XB0XIkLn>}1{rLaio|)(OuU}e>g;JX&gqgK8+LJ62SXMGI z+S}W!DwK+A&D)oGd0C_aoA9hW9}1{rLaio|&h7?d?@8M>0<&`S7e*Ak+1*L2wBd z%dYGB!AwEr3m?5)+8DRlfk(~cu0+lTPKUdC4&U-jULROyka)2-iOYEVK1q*qW-->L m<9T=L&b2t3-w|nGU}jiUuD7*arP2jx8H1;*pUXO@geCx=>q9I6 literal 0 HcmV?d00001 diff --git a/images/authpage.gif b/images/authpage.gif new file mode 100644 index 0000000000000000000000000000000000000000..4bb475b04f27f8bd6bee6488407c7be0a5f922b5 GIT binary patch literal 6086 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 MzxkXG$^iiYJGBM&y#N3J literal 0 HcmV?d00001 diff --git a/images/back-header.jpg b/images/back-header.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4ca4142673918c36473be806f3d5dda87449e0a5 GIT binary patch literal 328 zcmex=7m;9+J2n$0Z8V9&4}YAWNLMT-|tU|?YWe-i)> C10TWw literal 0 HcmV?d00001 diff --git a/images/bg-diagonal-stripes.png b/images/bg-diagonal-stripes.png new file mode 100644 index 0000000000000000000000000000000000000000..e94c385caa72860a15b4c0fcc64d511332fc9ed7 GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XDm+~rLn>}1r8%%3ayY|rWPhd#A6rZSYl!glLrN!oTnpLE zWb_tvSqKaKclsn`v|yTr*Aauu0Wx|gU7ZVmEmg|u>R+~K;)Jdv1raWyg#i(N*^}%P z{`IN3136m1+LXVoRJEJcW2dX00o}mh>FVdQ I&MBb@0DFr_TmS$7 literal 0 HcmV?d00001 diff --git a/images/bg-gray-texture.jpg b/images/bg-gray-texture.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ef0afea753467848066e42ed791927baebe5bd9a GIT binary patch literal 44031 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 yc0mc^Oc(J`DDai_-mXaiA+3MEJ;j* z`M$rizfVhDv%ovhn?|E8NKTTaQ)fN(hR^e)sOQu@4Rz2-c_z7@P?09sfYIVnA_rq6 z>)>209fMIzeh(H+qq!S3%1km-kpdxvjt#qX*k+xcLepr`v1UDtPkq37c8C zF=W<)3^O7Ijh@sHIKyQT&LIj&36qNSRSG)2Lh;%#Zk#C;RWiT~>j99>0dzW7UN5zc zWIFcWFy5$bR9f^Hkd7IN0s}(zLlrU$rfT==j$DdVG|*auhH46|l@UmR4#UZ0nS@Dw zVWS!p5{s}LF)D&tFoz4X_#hu)pi10;XAqxdTA&Z}bidisM zC}P1Xlou&dp?nYqnKO9w|1BOs1qHY!2{8N;nNVI z^uJwM$xyeTaqk{suH-cAlXI7RlHSp`x|p@38v3j}yk_#la?xZ|ujzYp=hKn?v+HtB z`EEBaAKlTvrzrNt=#I4$hi{BGg(^-!C_g!|h9cFMLg@;M{6g9qqOjOX3akr;JvzOD zsvEvKQKk#UI=mVlFTUs#Gq=jlN_#LBTDP`l%Du46XZS$S>B^;1O?!SY1xqMmIy=3Y}9=Upt5n#$&fcMKTW`F9e3e)ja78vL`@RXY&;^pNdwYhTI; zi&2xMcYN`!UAxmhQp8#xPsahM}Iq_n?Qi-=x03t2+oU+WgoNnF|zkH?;cfvAunBmUpn~sJvLKlpYOh#5f4+$T|UbHQM@#cb&A4e&qT;1obVZkurJo`{(Ml ztnp)AT3(>v$@1e5%3tidwJ6C$yZFAd`pfHuJ1wx$0Zwm9Dm=WA-hXh_?|K|jRo$iH z&^ybFT@jz}y(=Abi}8ppy*9i9&uw%E5^_wOCra6LN%8QCRqY3!CCt^xVnfK9No|oc zF*TnZ@CSiCPrPbe8CdMcuU{hw4O!YI5m)Va@9Rw~hn5T04HsB_hCz{AQ(06tug>59 z=?e4NfqqYApFlr>@5wPB zYPow*Y+UhgTc4@gUi^66*yaQ;P7r&WLHD}m+NLi{U(lnyG^ZE7?bhBMsPC!is9GwW zwi0$Dez8C7Xz!Y@gW0tsVJ&@?wKrwN&!@en78F{i6Ji#H(%b%2`Ns{VAKkj+EWPm% zEZQ?9zHp_yx^iVQw?6dqWQyrg|F6_HR!eiIT|Mu&C2!}%ao6uUS)M98nviY%54X`k A$^ZZW literal 0 HcmV?d00001 diff --git a/images/change/coral-change.gif b/images/change/coral-change.gif index 07d94a1e1f0107e3f52bde6503dc0ba3cf602411..67ba1b9d963b4ad0813da8a46f638534077ef24c 100644 GIT binary patch literal 1119 zcmcJM{WIGK0EfTiMdBq*x-e&@;V3q`bTcvSwnSBjy|pX5vr@J0o43*| z-hw8?OJX#MsQ0LsAQ2^wYrRCzTbfXHL>Mhfm2BPru+I z01D)f#tlYMw^qOOcRWv#BI^AzyVbb9we{+C0KH*g@_FZDeciwmQ>HnRDs@h+aY?Hg zTUg8QdNT5CH6XL);J}Q#Av=0Qwz2(sZguklzsKuV9RZa7RMEp#Xy?~91MkR>rqx_3 zRpoSQ%loE%!1}O4MY42|+x5gdT{3Jiea5U6sHZ%Czkhc5dzN;pvUp z9a{O=GtE=ud46{&w=+pPcu}BqPZOVF%Wu|dst0wm#uoQ{*#lPlbe^%EhsFy%i|Z92ujP!D}}#FS3y~lqnlJK!I255KLQ&1qVifWl@0Ekg4_P zIEPFm1fqu_tf@MEl}?Fv^b^jur>snmIt4*p96i6NRYb;+0Xme?fmyezI|3m=mA3c? zh_a5;rk}%;HBhGTL*L^}oF7;rx@OUo4^76+fHbQ$8Ywx77QqD2iSI;81R#VC<@oV% zVhxSTVTTQzuywrWjl@C|nv390QFw3z6GBH@W6elcO8Phjg10-2+aXiF=R*+ir#1=s zU{{K3ape`Frb3B_K%w||4WPx%NSmX_N48{N14tDA<77iZrIRy4)%IeL#q*$&!F-V= z3)P+?_*QGg5pHn zNvo0HD5+-9ibzEHa_M$19CRP1B35|@PCPXiiE%>5|6AzOucul2P?Y39?3TX$bs3K* zy6IvG+Oy-)sd3@BYQ`f4K}&-vONNR$5e`_+SD9&GLfkcQSB4F+gaQ_J78T*{3VKf67kddc?qpC%!(%d2)3E=Fsd*&igVh#o%#~I7Tj;_h8*ag&{+ikF|Rxx%2S zud=+wu)D)sX>pI6p{umIj+vpYxx$g0qF-!sPhMrZ!N)mBPK=nKUTbomsIFXUaX3g$ zw7J6PDNB&bb*Msz{Y2FeBkEn#?I74Q(2aytDL8;)7s$C*xp1_TDrx~LsMDN z+~vH)$lKuJ+~n$Lc71Ahe$ds>`TP9*{r=bE?*IS)A^8LW004ggEC2ui z0EGY)000O7fO>+1goTEOh>41ejE#l$Dm3n3xVgH!yuH4^z`?&>!gj{T$jLM>$<5Bs(9zPz%h1)+*v3oQc68p~ zbXihlI5bW!-o(f zN^}@yfDeLaEKYRDaAL=eARz__N$`!ylTEaoTsfeEf&(N>j(DkHgvkRaUdA+8;eY~{ zCtp@rX%b139WpH-IbagS0hlXaqGE+fA!Mywx_0rp&G2Eu+8YucdwKq7wyN*LjS4i1=Lg$A5};fyr$cgKtzZomVEa`fn93?TR@#qR>D{KHqh`>Sv z4ImKg01+(PECL>gpo9m?GV5#rGa!(x5e)=;1O*f%J8S?AG#i1k{?ex=7M=dqfb5w2h)mUe(_10W>?e*7L6Cn23WRG1y*=VOtfFA|4 f?e^Pn{~`C>bk}Y7-FWA%_uhQ>?f2h(2Lb>)ZY{7| diff --git a/images/change/coral-licensing.gif b/images/change/coral-licensing.gif index 8503045ab51f55d8dd50335857e482922e2cf3f9..6c2f48353a5240566a398e94acf09244cff816ba 100644 GIT binary patch literal 2032 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 DoT?UP literal 0 HcmV?d00001 diff --git a/images/change/coral-main.gif b/images/change/coral-main.gif index 793a3c8d0b878f9255940b539ab7a254bac790c6..ef8376e0e08ff269c9aabca0ccf1995d08811850 100644 GIT binary patch literal 1420 zcmZ?wbhEHbtY8pl*v!wc|N4VhpT2InaC_dNi*d6yb#6UgynIjHx`S7qy!!IvSLVX) z_g{aQvggdnyH8i1y!QY9f5rdY5xxNmE{P?HK-$K>q98FjJGDe1DK$Ma&sORE?)^#% znJKnP;ikR@z6H*y8JQkcMXAA6ej&+K*~ykEO7?aNHWgMCxdpkYC5Z|ZxjA{oRu#5N zi7EL>sa8NXNLXJ<0j#7X+g8aDB%uJZ(>cE=Rl!uxR5#hc$WX!DQqR!T#M01EN5ROz z&{*HlK;Otx*U-?)#N5izOaTg%fVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj%k|2Q_413- z^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5FD$Tv3bRMVDIQ9=jZBIBo^o!>KTB%1XJkii(hGOE?jkSNl+@ny;uz{4yi0i)elN7 z&Mz%WP6aAg23b{L*(J3ovn(~mttdZN0qke1Ox$j9#%Uf@ZwhX= zxZu>Q4|I$^C}xpj8YToxJ|HGM-2yrAl%JXhOzuU%bj|qx-`_vKfBpRN{oB_spFe&4 z@c!M~H?Lp4eDVC*(TITuzuazHLF*xT(NxF(j|)*EnF~v-rPB}XU&{3ecIG1 zlP67_(BIeF)7{nC(caeD(%jV8P+wPDQ(aYAQC?PBQe0G6ke`>Elbw~Bk)D>ClAM&7 z5FZyC6CD*95gryA5*!p5;P2<_Vr&G=PT0Sg%1Vj~@^Z2=(o&KV;$osA!a{-q{CvDT++3U->};$o%uI|742nNlfFwVI z4g(N?3K#~K{~u0zuHI|$`t0ui2^xJVne#GMt;>16uR!N~N$&j}TpCk@6WR`>9atg5 zVtHqsqv0P9X4j-m0Sc4N8Ww0U^2}S@_~4gB$Hqtp#~&IB^Q;dgW>v88urnnFNb2wj zak5A8bFx;|lvh>@l?pL2WGFC9@nGa(^k)iA<}YPrnaJrV!pz9b!5`JaJTaAb!J;L7 z{1Yb0Pifk^!Jn^+#bbVh(2Avu95t+*Eo}P_Fdj}_xnR?&IQQ>9$ z?A)#`7lm#gxh#D3n)D40cD@H&r@7Dj{`S~bcAtpCNP&jATZ(+dBnm|RnYR^jzq@-@2O>Q;LOnd{Qcd; z$ou&C>fPU=S!IwqNUd>unoC*U$;^BcB<9%Lh9)-Q(bTqpiM4-;xrB|Ze2L7ZtiqC- zpjBeYpQgv0qpojx@#pF9<>&3-srgvw(_@@$&N3*x5){ zTaK5SI!RBtzQF(g|Nj2|{{R2}{r>*_{r>*{|Nj1~XmixHy8QkA(y_MM(AVM3(b2QH z-p0!0&C!P`IQH@KonUXWgOAs`zqNgb^6Tu_zQe41ejE#S}prxj#hGc6| zC2fQWVnV31w2u>de_1IYgAoo!wZX!MBLISNBu-d=Ll7Z75%83Ee4&m@uNXO2W6KVF;D9DDzAO(9GvZ3!E z5E}{qgVd`zppPHgLDXG$nMCkj3jzFLL<1DO@c;!b{2>Gf6g1F|d|VOY z6(KoX^al^~X~csM1mW=HT{pqF7DN)^M4Al^IhWuc3-Z_r0CWhD;RhsCkR$|9 zXvjqpisa)1KM4UO5JqIN)&mgA5!jGH{FpVIf(elp1Q1&8<6oMeJYazXU$A{CEA6z@R%@*%fdBwIiyAKG diff --git a/images/change/coral-main.png b/images/change/coral-main.png new file mode 100644 index 0000000000000000000000000000000000000000..5b4548e848ac448b297642699a768c22231a4099 GIT binary patch literal 1923 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 literal 1122 zcmV-o1fBawNk%w1VR!%+0Oo%HN^3h?a$a|vS96JKU3OYpeM#~1^7#4rg{fs}kVVne z(`0;H?eXkQa6VFVNJU~qPIEL|enWhhXoZ%1Wr|Bzc}ZJ?J4$Ir{Qdl5giFK8#=Xn6 z_4oE;jY3p)NmF%4nW~gIS~hu(b5L|aw!OGTWEGez;Z%4=)Y;TuflIW&uSsb_O>96~c1UuDba#w!cZ+$B zt$3iWomYZ2ikydRkx*ZVJI>S3P;^MJzo|!SICY;-@bL0dbVG8WMNe%^f~rb^r(bug zKe@uUmZp)~;Mtg_nSz;eny!khzMy-oM|GG&iI41ejE#JXM;LVh%-1ZI6O3`F))*U zFS|OV3SJK(B~319CKm*Fc}pTgLKuZJHkyAhH~OA11|H?8AxOrySPY7U0fQohixn3f zK&;@PgatijI+&5Np^y!NgLdrrBg2mYKblJVq2Z^XA3rl(o-`>4<-V6MLC$!o35Jaq zEn$HCv$ICPeKk}LQh9XI1|Vueq?oA0M1cwwJQTQ)K!5-QOgIpt5u+*58~b9s$RR_< z4VW+gV$_^5;|4((F?h__5$;bnk}zP*h>_zDOBg$Bki@aW8#qBZUcktKqoxfWFmSYV zOV^*G17hB|_))-WmJB}}d~i|$fDtwZ>=nX0TQ1&%Id}-7O$cb(o^t(q8}y>@Al|DCAb2*9z&1a^F}fC?%sKn4j0 z4A4OtCnRDGHrnhKoFFy4utN>{*)Zr0Gmu!NH*po$WnDbfaE)O%gaaTA#o-XsnBhG6 zf(qeIvfy$4+jV`M+6ptP>Q6+@S=kdVbp<$4rD+fK@^){>PHTs)@o}m ohn$ds1U__PKw!p3dk7MA^dRlEu=Ic|w%m5>?YH2Dn@Au4JEGwE&j0`b diff --git a/images/change/coral-organizations.png b/images/change/coral-organizations.png new file mode 100644 index 0000000000000000000000000000000000000000..2e3c8305399091c5afefc946faa88b9919fa9e8e GIT binary patch literal 2228 zcmbVOdsGu=7LNsT)cT^xBH$xLi!7K-CYd}Y5Hw_nfPg$Aue$0a8AyO+VlqI2iU^A0 ziXIT;u?PyXYO5glJe9?0@qr4FMMco9SX~1?8Z4_~x73}e*#6<^A3NvFeD{9e{oQ-N z`#Mt?6}fckWRJ-d3T0|&2ogiCRpje4kxG84V-MBj;!Xr75V3eNk%j6pidc!uFfk=o57bh#t?4U`6O8m`WXzt;b@sBV~&0GzF}rFAk&y7=@$)4Mw0eqb6Nz5E@1FcY1{+ zZQlmyw09yznuz}1sf36qngrKlG%l0NP_Wn_jSn+HE(C+%A{v_oasZG8uwe!W3L(A_ z2%QiBva+(6SsW&=PXRy}h5;5EV6z#d1jAs`5~z`( zHOwE^fM5oNUace4xRz$uh|2K{LPRG$eSZawE+XQiVy)prpvaH`MpOrYOctQg*zfgD z+Cao$zq#>AX@kt9!+;pffM@6xWImGTkAunB{jnjtAnA>8xn4~s1x-hAMTQ2`5}}BQ zPM$E8YNZesU~*U~Kp7~DjWQq*QZVEk1)ss?@Ia1&$Cq>Yig7)k!XpSvDiw>x2p5rp zU@#N}3b-&I;qo{zAL2r+acrp8K%iO$Hf~!@+Wvrr{}3yb=rNSQ^)eh!AFqNa6;9v= z6|SR6Bs8B0RH4?|`9Irp^!~~SrdMZTN~s>#(B1`EsQ!cl0uY7d%4CSa;>lSINB}1@ zyJlR-ZH177+61`i;e0_>IYyUH2gBFoWEe(VF1`PfOAmTVtA*(Y<+ zs1ORpu{RVE%Z&ZcsyfqFu9$Vn1{KtS`}qeF_+w|nVpX)k_7L&iJeREK6W+YPWJQ&k`IdP^G)QCZ z6t^m@=oB*}S3C??IBYC|=XxqVZq1dYyR>C^9B-opeg2WH~xG+Wrw^r*Sf@i*Yy0; z=4%5B1f3A}c&PWueF@uHvzN$qkD|ICb7bb%Y&$V2igGRdtK{!@QX6+44LCAsKs(UZ zyKM4xJP4ljBJGhVFQqS&$0pjS-f()&gpK*f2NvsQ{o<5lb{TLR_8y(}%LJ`{6p{?R z^yu~ZDQo6vwXJf0pVNkYH znp#?0*GyHhw-!O>=grSs>$3ncy(Y$F1KN!~5uI2QLhy4csREBTuT&0^`O|j%l2HFy^Opfim@E?m0 z=^NWGjUfHe=p(S%#yR@keb7T7tzUOx^MjT=-(rsUm5Cz@D{?BVQq!W2klCz%EkXVh z`Ql7R{J!SaZBM5izwXt2xZvXP$Y)5s=u~A>nChOBGnxc1^jqtHD%cWTXPOuz$vo86>t5F&ULQR@4t5@@7IynzPP?`)a(mYvm)A;vM2v{a3+`q} ztaJf2IT+yp==9u!Vz>Ew`f^ITyQC))AOGb@bj}QRZt1cf#|um1Uif}@G@#a15?v?l zPipD*V|d)-W$!6&=q`&3pl6o{S>|P|4s5b*w|4xb&oaP)FlnCeK6BJ?P13a z*}kD7Uf0#ZAKKfBDlVECx~*jzk5{~&Qyh)k>&s7NYs}Q5&+EerN1}aM8)By5joX5F zO>=5~NL#Nhf32(!l_|q^7gFm_JeR%twI#f~$pCaj$(Y-oKC6QJp;2nO9F`s$jZSvOfpNmF*^sJfs9SN)E)o;-3hz4T>J zaerHOp&=)=$@)3Rt$pNxWbakiy*@K+)6z0FuRJu;*YcBpr^<8e_8aXwbFm;VP&5c#k3O&N26;w@Sb1nrC)OdHFQ=jo*z05x1_zdrBXFV_sg} zbZ6HSw~8#kQu)n61roBQz;%U-6!N#+4c+L{VmP!p;b_CfrxRA}_UODit7HAh`n!o^ zDVJgc+RTF)w-U!LCEiYruRkpF|M6u(n0-Y2Zf@8o$oSm&I=ScVXHzI%X1~obyPY%b P{}G|Vkw|0En!Nu3hWwGJ literal 0 HcmV?d00001 diff --git a/images/change/coral-resources.gif b/images/change/coral-resources.gif index e69c256d3e11be756e2f435d8c26c281bf8f75be..ba7b5fb5421de5bfcb47b16b08d8185ec982e0d5 100644 GIT binary patch literal 2511 zcmeHISwK@)8omi(iELpJ5m9dfDk33^ASMz`NT5Imi|8m*86_l9Qq5u#AZT^MAd9uy zpwzJ{EvVyGmY|}LAVSzgQNkjk6h#aWStNvgZ{moZhhg64ZO+5J=Rf!RzW@Kv`R=`6 z1O;p)(8a(KU@R5bbK$o6&4Pz7+K=Uy-Bq>TdfVBf8+p^KJyB3SG&%FLvVM4c@`0vT z-rXa-UYuTBo3HM!`=HI~=o*}yx>?gaIWzOLU)!Ya8JU{R?dbaTZD*raH!?k4+}-<7 z(>ppf`+8`ksH>+*s~eo0&hF@P$SFGTq)|IDRnyj~8Jlby8i}k{Ey*eB9-Tnu7yA?` zueW#EWfy*3@vLz`x3@~g&bsfMCr1~Q5{k+dU46^*6b0&@P4e;&6VnX?x|HX?U3;T$ z92knNYhEc+ydD}u-7Y2;mGf$w!jw_jcuz6?qE(l4_E?Qqk4>Wob>%*c7Iq^lAT~W^^+8aYO(3)PwFm`<%jMx$>G` zty8Z2UT2R_p|ZALcSO~~s8-3|y?4%2yd565ymc?{ohG|O^X!98+R}EhwPW?2lBjBx z^{so9;;O#!sg?PP;i=ipipqG^3yYft5tVgdzT%;#AAi5BMAN^wx^90>gX)9s*4yq@ z-Dt<~_}tta@c;3@-vQ*Dd3Z=DNTZAB`n&HIF`v#jz!HH`to>{*2{oX2hyvM65^9%s z2sVUIWks_C4+~h^4{zPUIDCLXV4}8c27SduF^A7#iRhr1bC4?}ib*IslNZGz>gR@K z3<~@R5gj0*D24~1At#k5V1eGA-e?9Ej{|)Oo;YtW0uJW^;<32(7#tRZC!ldSqL&X5 zw*mY#Q2J~F=00K=E#OlweMCYJ^U4B`q!bS{GxL?fZ}5}s@}lj!Y_qXhWl{HRnf zFC5O_%g@K(i{ee$=(TZ!55=G6H_xT<7%?0cS2WLM{=ua#$TfI@!`Ek~u>|Z`7BfJ= z|1^C+4(H4-tGduuOV}@ zGt*O(6XRo}Bf~?wLG8eY{=VLx_nPjmPW8Kvx9x9UxBb@o>SfD|=I2d~4fU$JXHRRN zJg#|ET~%38t}H8kSn{A)AulStf3M)~o!j}cyxg4ZUvJ&KasApquU@&FmHErh8J8|z z`04yV&i$Bv_Dq`ehtsFNKl$B>)Rg3;947Phv7S9_+bKObAS!pIZ&2amS|?@9`Q()Ri1)y3BDAVf4KsVawJQE zgoISM1NA%S37H?v(%98Yt0MbBEN$GSmx6?@dS#~@8xxS$$#(8e_K~Go*XplWtrNLL zCY=1<5pww)!oI>U!3v-DO&bvlZNzVY7G@?U2Q1D{$PQ?KJgR}&BF&OWXHaDsFmy4@ zt-%!rml_)bj=t^W)^aN!djRP|J_EywWvVNyDHni5vVBWrC;&--nSd*Dq?BYET*Os3 z`^?ien<25zw$yzz6O)WB=GheaeTtdoW>|PyyRkVoEEXm^D+!iZTY_qnQ)JLsX^udG z2Z8z+z{=vt+zJhl27ws?h;VJB3`#R?FhWG`nN6&>^^G)>T{k_s4h~B_ZUsM&08CZ{ zs$NC{peh3xK%xL+Q<_^T6lx*O06I^t35_?YT_c5#m0i!En@0x%M^iPij(lak6tG&Q z&NQ~;tEG~~b^bmXDT}ZznQ_(;*voV%i7!b>mAG9Xf3?W|vUG`uL;`I)weOV~eY`$t z86=%w=u?ineccua&`;(JleU rmmWeqA5fbAbo@-PM-i;C#A4UChybTU>TNQIxW2(^FvVjV8QAnYW=W=! literal 1101 zcmV-T1hV@_Nk%w1VR!%+0Oo%H_TCoMu>=18{p-;L>gLMiy#nOR0@bVnwVMy|^78H3 z4g1~#<1gx7V^4bCQ)C20%4%O0)-pc~y(Nj_Tu>W?&#A>+`a}`{@41ejE#mxco2jao zc`H^VBoeYo6hB~PtGT+20!|MyOAB>rDM={+6e=ceN4w6?e;mt0)|vUCnru51#jL!I5x(HvL#9q z;S+RW#J`J#%27c91Ihp|Zxkqi03nMC8$a6Ixv>M$#6K_paJXd)7x2~|U+?|# zK?eGb2pJ(CXrS7DK|JsP4-8mQ!VE+NZ~zen#DEzC4Cv>bi0WOS0aP~G6oN&6c%a&< z27+lI(*_{MrkjK|S)f{xf{4J|E@~ja#smf!P(=v=^l^ZhR5;+n15w=b;CD8O0Hp;w zfnWiXH+i6eTsQ3r!drhynE(hHfUwx0Q1ZqBc^e$3ixCan5Jmw86cIrHW%}^M5PN)q z3PzwxLIwg4L{LHrMPQ1+3oo4TX{fM1Lck4A1P}op5gc%U3j`4GYOKKWa>5n|Ou@ww TzXq%9vdlK??6c4=8wdb9Xy*d3 diff --git a/images/change/coral-resources.png b/images/change/coral-resources.png new file mode 100644 index 0000000000000000000000000000000000000000..efa34219be97c4105bb33e8ae16d53a0058bd005 GIT binary patch literal 2012 zcmbVNeNYo;8jpwp5u{ZshoELcusV`#Hrae^O3Fc&NR$8tPQr(n&F&`ILOx73O~Bd{ z7(G2HqoLjzFjPhSXs;lMRz0YwbKWRWMGEI3wW;_ySan3i_C#-^VA~m|e{^T|eV^yu z-|u;z_xYIJoRPLHEM#5?gTV+>r68H~UPHf&gPHWo93LX-Es{#sP+1l|Ssc8*BRS6dZ?kxVJI5m}{a*;r{22IK66cUkc+8EwEsP$30zN1NKt3RVxgaQm zBr;IUnt0f>Hyf^(Wg^N6U$iD?8!5^v0|2Mf$#V*M7MlS8VHgJZ0ze?((g?1-#7v=uU&qwArMnIzM>`)x;lARUb?-A2+yL5mR!<}eXvN`=VT z^cNmZ;xbrD=wMuma#6kj1nYECiB6ygCF}`4{(F-L&_MzIPWeUWOdiqg=oeqj0j<26B*ILOkBy#_!S3U? z>G6B6LK3rG19xlkH>ux?K6~MqoV>he_jTJRf)c@yJ9V$3Ld9_wp*Tv*ifJn!(B zv)>US@T4McW}f0v2q#kQ?%}AE)i^{iztTEY8?>-=#z2SR(%IG{-O;at&LfuSYB$N2b2 zSOGi#N!LdYYT8##>HI)s_++=0D@t^&$-6=e&~%4;EDY+CW(3aiF?T3N=Cq_n zVpPK%b)+CHurlVx=AQm?=t=O`W#@d-Tf_>I^QBb7RF-4WNf(+^YrxVNLtEY(z56>C z)^9J*@ddbMo1z4( z#HQ6#-GzD6d*^kxXT{#f+JLdfRfY47w;Zt}x_!L;i#OE{AG&&|imyL?eM9r|)U~tL z8L#ZZH3=?}FMu_8?@(!HojGtvuvs`>6pk%BTwFGYH$|ewlE55KTj{xespnOJy$d2@YltgqD1}g!RBDPGlIa~EkV zQ-JQjiBCSOg;q7(Ip}T+e|r=hDZad-UznhOd^e!!%Q%Tb>pWwubOin5WOKNwSJzR$ zwfZ^WV;#``#5puAern&%AAj66C0ggvpS|6!W1XJf>fQQpc-zcB8S2#dvz2?Q+c-mb zXA%C@s!*g|+~>KKpZZawDT;bD_U1QED|Bg1;1O@_QS;KFDA)Pf6<@qLKkafV7f}jNy zYDHx!+F}_32*?bp2o)tD1++MXRb>%bWM3w6#Lkale)ax%@1Fapzb``zp0a=?;I z3kP(8AtrFK<#g&p~iAiYw==4HqbFXB0s`|y?`3F6GsA7dK0$ z7gyd+&TsO+)&F7k)w?MW%Gnu`XUe%((Abk(*PZ#OOa1tdIPU!unf34^=}=mY-<3+| z=n_^&ozl@Cp7p%1>w0@6uI%H&vPVMM(MuI>u@4`=8XlipYVH|xi!IgpI?MNR1%{p9 z*gf)Lc5!5Sp}ci)VtzTjtb-i(U~+!>Ty7ITtKoWihgU+mXF_>FlLTaBCyQS6kI(ug zRgwe+0hvWp3(KpktH56|P^%k#UEM({O-Pfzt@nrXX!KA>2nInRERGF&{81GeWHD^e z$IM;vt~>{b$#Oo!hrG_XdDG8?(#Z_;{(YczI3=9TV?#n37|uS)5m3Ty&@=`&2%<>m zvSl0^`~(q(+Mw-ZA3#}72QD81%}vd*bi5e>v>=-j%t>Sd0Rx)h2}B$Lk251<2?Pqs zfR5IhQoDK{JIy9tDRB3kx$1BbsvgAvgk=Ovd5OaAsy$DFQ2q z;0S5qSdL)lngSIP(D^K$kj3SIGDTVt_mt2EEv@uFEwFiCWH|!UPwkk}xoliGjfW$c z;$f))rpp+D>WpTYv~2p)v)mIONo z2a-8~;7GE!a3tB8+gXw<_gdIFQtj8cR4)A#8{!DpxQsu!_Um$GUSRX2nW+$;bsAzE z;B(pFr=BUS^=q+QSMM{Iv3@P&b-6fcF*w=I{?|^gElKSon||@FH2C6th$FQ-U+Qbv z>dNxc;==sg?99jMsmX~CG{{|?mu3=?CR|Jz5PX7tGMO) zv*xG2H8nnIcwApsTT@;2&wo@tswgjeSXxpnD*AijuMY}-`T736{Gal2bF%N=xt(?E z$D2Q7X56@*o|gLkwW}$~SCSGhU%HqO9~XNeCORteZ|BdQ{q9Uec-ZMvLIM9<9+$&D z8G3@n3<-u9^dMT`HvwP!f8}@F_n6O7Z!b>|_aknuhYuZeadtZ3NOiEcv)#YX#@dQP zwzSx5P9mB~50ohuv&Y2P$Z)s8uAOKUxMTaaty}c|kZ98V023}(u zW_$XbyV=QVs>Vni^{whUNMlvC98qyLRuc*8@6sk{@6rd6n%I(tCs))Ak-H5-TErm+ zyOD-Pja@HeRFMqt)>e}LS4h=YZ=Rq`w$L_9#5gUjEheZqxcmh`t^^(&tb(xCw++;Q zolke)I>)Pdow0{}!*&x6c9;$$B{VM%#_2&!vDI~s<#G#1|NCE~SiH(K`R z9KK52W9BT*S3}){8zbe7A{499*&?*9dhcYSs*-h_uxYX{Ls3y9oIik+>~JP2t{AK5 zNP4PZ3Kf}pR*gVR5_47I#xvd1Sbca9aSCh4n0B1+}oIf_8WzMQar zO=otXEtiDWGlqt14{Gjc$?Nj{Z10Z&UT^+o!$!- zuK#2MH$O*jNR8GKchcf(a}_Q2TTjI5ZerYj zhj5~LJjZCZH5gDDjOr4J`{{H{}{?@dLm0c7J=E9J+iBOk&RR90~lTiUY zlVAY`e4KvB|5Xzb6d4c`4;O%ni%b#{7a2k!5F1GV z0YsQ-0tN#E3Q++7OrnfJ4|o(r8xSK$mzik@e+L9Y1t|y&NeKf(0JTQEzQBwU8Xq4b z9z$HOnnKSA0;4Ge(g?)T00`6s0s^;00tZ9|0|($K3Ev4q3jxz9=_vpL2=4Hs^VZ+B z1^sC{RQN!_LK9d+G%;`h08|PE+zc!b!oWbi1_DwPH~_H$F^vr@3L&t-Vl4*s0^AZH zf9h5#1qZeXVF|$HsEsHU6e!R@fzJOl5-L!DbnsaUO#>Vp5zvc3fOaVcWMnWgYDOX? z130L~)JQ3WNA=P2^{fv5vcLiNyfi>3z)V;nH3-Es{FJSpXrR92Zp5CA*X{XQiC diff --git a/images/change/coral-usage.png b/images/change/coral-usage.png new file mode 100644 index 0000000000000000000000000000000000000000..a17c093d677b0992ec070f0beea8736aef534a5e GIT binary patch literal 2225 zcmbVOc~leU7EghIQb1%0OIc!Q5tJ;Gm5D?Pga|@Ffuod)W|B-6A&W`aR1EN35EPEZ z4G%_Lh$fna``}arcO%wUp@OkA0u3)9kpV0NBmguj2ml^fG6|p%0TPi6;sJn3WiSCc zcHzMx)>J|fGnCC)u!V3eoJ6BhGKs|a_;^A*g`iN0i2w+KL=u@uCgTwaygE^?ffDd? zwacOgHmnw?q)LrcA;;=8LVQK6hJ`~s{cr`DlFR+5Sgu|O6cRFG0;D7Y1QJmu)7|U6 zv|1Ai|K-LfrPbkyN|+c5s}->-0g?}q%OV(w-9H=B2_oJwLsU{EDNqbsA&8a1a!ml6 zg+opVLaC4mdcu5A=n3H=5*fl%0jdDcrwAB$8ifu}1atO9! zGzzsup~U+7V%@lqKq}Yq?z$X(xH217N#kH4N2QQq-v^l~{e%Oa07T^rMN~YA&L`oi zo}dWNrwKjrbSlW_douWB5x~GL;D!Hh@Q8?0L|vu)t#TH(kaEVT6j*jo@_lGg ziH@@87IX4W-fVJGF7HUz-ZFVL3OU|cf3Xrhdp9R{I*^2>{|lTjZ}I3#y+iGnO}NzQ z4-QY1_Uw{(<-E|l@?)~L(T2wwd0?bXF6KG=FPp{J-IN`-zf?+39Wgn2vXQ|nE*f*$ zBwpHw-rMu-Sum0a_FIXoEQb!7xdvW7ELzh^4~tUOk|j0$XPm2YNCwNh+#kpB?kxRt zm}q{l-D6)z4smldHX6@uKx~524~em>Hn0Z8GKJtvr#K~E9dj)Jbc*Q3&8|u7>YYTEt zS#prOsUY5A9VRJ&o2++#zt@EpNA~lfl@kUp{Rg8lFZGR@R>-x6o$1VwzL~^>Z`;rIh_nSsr$$|W(aV}%?NOSN zcHikr-sUyij};r&5utpOSH*2$XSG{-Y133Ev%Gn1bxkHbkf)BRxr%9MrKemJ-*nxf zHnRo@`hvo3eVMJs}@1fpWXMFVL_NiOJQ`z$m8p1kG;h$}C(q4c@ z9i~b!%~70Vm)V|W)w0f=1oSp-N^G-PH9J4H^i5KE)(CBm*Rgg((!Oa-t0?qvl>dy{ z&}pE1&Z_LQWsMi!>`orPJyX@W$}D)tHPdsW`n5>|MLApHuf7vVB1fIoPr(yor>%6a@*}ubN<$vw&q(+-N z-^tq=+m`i0OLn$9k@dp*08njAQB1DvwP==7v!5RsXjnSeQM%{oD~G%NF?B~o$Lyu6 zXYKc(H!I&g8rnjzkl#+zO$yr99~t2~;_rh385tkv$dTMZV-kw8YE8eY5S^f4o65!_Vr3VE^!@^Cdn>IhEP^%)X)LXT6e1)BM1vrv2!a|Uh}h)N z_yM8>v4}{}B+6-wS?5jMWj&AFgqNM0d2e=iW{E=l3x|pShiST>Xpo3T864tBH_i(Y z=Yni2J``iDF)kQQMw?M#WEjz2`d^OXwHH!;HCW>W=K=a_fTYZ`Uz6KSj45sHmdpC4{!~ZFDZ_)Nw6_@L6}^%;_Rw~gjT>%md0cfm-;&BM zjF>p<&{OnTV(0rw;k><6ZI1X(E}oHqE zV(3?py;kpRJ@&>KBz9BW6nX8TY;(k~Kiy02_H@V2;qK^x#LydU2dk5Y2Va|~f9O4C zV7U2}2~AaBpYH-4D5mEO4;t=K4DX2jlwAYn+a literal 0 HcmV?d00001 diff --git a/images/licensingtitle.gif b/images/licensingtitle.gif index 7f5e4e95f64ba3af2dbd5bdd8c764bd7c76232ba..3fc6d3dd754e755fd73439e5371fc8935eb7397c 100644 GIT binary patch literal 6217 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 K#>Hk2z99F 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 U=*lkdzAfvRp6tbL=m7x$JMBOsd;kCd diff --git a/images/licensingtitle.jpg b/images/licensingtitle.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bfb6e7d4f6d1940fb62a6f9c00052f6cf516b091 GIT binary patch literal 12778 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 K7)>Q625SI^w=>)T literal 0 HcmV?d00001 diff --git a/images/menu/menu-admin-on.gif b/images/menu/menu-admin-on.gif index 96bcecadad9ddd947eb96f15a23e997fae5268d2..60770590e1276daf6c4effc2e46965e29ae31601 100644 GIT binary patch literal 855 zcmZ?wbhEHb3}Db;c*ejGGXB>g4TLpITO*Sa|%-y5l!jow+Ypv1;kbyKlez&~4n{Heu)b^AGL1x5dso zWYD~^di~ji`G?Owe4|*kTE1e{!?#}+pSZK)^u6!D{_MW?)P2IPjTauBxcBPk@4v>a zn^G1X^_;k?clVX8mmVLx`_j2@$E#1@i&vj|{O+rI?b>B0?_PZJZqe~O^N!w5UU;Nn zqbckKB6m<;SHb?|%RJTe9Y~@02~O&)iq2T-~twyiUXV-+%x8 z|NmdQY$d}W28usfz^>B)k)SwXVE^C1;N9HP+ScCD+11_C>)q5hanj@|Efc2Bm^pL$ zthw{L=geQUc;Vt@vz9JjHF@RgbvZ))GTd0YSXom+P8Y2Lbb)&2v^4jo=})Z2}h z&q}yO+Fq%HiLH~7vDb@b#Y7`9b5Yx71!XVOc5XH{{*LS0P8bVVsK|QD%ka5swKH@4 zdwU~IF`Gffb&{ZoNsC3(iv~s}mMJn4TO1mM7@0P3dL$S+HnMox=v@qR@NDQ~RZ@)J zq|DB$DrB+7!{xw%MrJPwokEKQPnTXc5fK9ghZT(+%A8Yt3KBGe+_l*i4=!L~?r`}( zP2s>d2hUTgoF+;VDhY2UG1z)OlX=4TN<~6wOVpf(n+IDI=Xia3rYkV<0zC9$PGY>WkiA%e1JQO_auE=J_Zkci+^x%TEP0ajhv%^-JZR<*O&02GWZKA4_ zhri!&?%Cw;+U4)t=J4n4_1x$1-RJS&=<(p`^5X0B*W>Py@f(wk0S$jS022TJ2LC{t za7Zi~kI1BQ$!t2G(5Q4elnAI;;vhgcZkvKt7MX}7yn&{qGB!dMhX7;<5eNur+hI_- z+pGsd1A%%21AbTsXAxII2n_@Xc`FDB1Pcw8a5iB=l#mMpSO}sG2touAf|C=Ttu`xH zov>%HjYurHy1O3%004g>0Uay=E4df}xhnw5%q+{q#?Q{syVfn(+1d{e4BjITEydUj z0ocpu0O{f@>n-To@hXU|>NP1YIatVX$GndKX?uoH&s} z0g5IZPXLSeS7ri(Z!1w=jG*n`}Qp^F7EN;$LG(Vuc@i& z>gw9Ncki}s+t#mNKViaz>C>n0+O;b`KR-G;Iv^n6&!0axZrlh83fjGU_ly}c8XFt^ z{rwLdIMCeOynXxjjEsz*KYxDw_;JUM9sT|NhYlUuv}sdYTU$v<$>hnCfBpJ(=gyrg zSFW5obt)<mU%q_#;>C+)%a-ljxicpxCoC-N$B!Rd zwrojANC*rJymaYOadB~BVd3rDwWXEIOtUa83N zY{{9>aMQ6#agOt+XSxCtFEI4lc5-m^m}Q>KO=mWX`g!os1V(n7kP9D^Tol>O*ey#g zgdSY5wuzZPZFbm7vu$08u30uJCpeX)983fP7Yj5kZ)W2t=*Vq6c_D>!x?N9H>Jm}s zkQ=H@DlW~O8XTGuk7iDI&&s8f#3D0i%fri^z1B$&lPxFmo|cO-ST<{~!}s?O_jhT{ n53LRV@_zT#dM*33fM@dFFIbk>e69Cl!0PE}PnWn13$jf_-l7*C-o2RUgoubCf&cn&f zovE&(t+B+)%*@f##mmj0tFNxNyQHqO;^XAu;^Tmjm)F|cW_p5La(bt+wQ+-rke;Ks zz{8fKsA+wLy~M|Be}-p!f_jUQtF^h#($v}9-LJU3v%9`0eU6lKg^g8gby;tCVt0RD zb9-%ph;xRGXncf$l9-mIs(Or*QfYFL;U|-g0S$jR022TJ2LC{ra7Zi~kI1BQ$!t2G z(5Q4;2~4lW0f2DSHUk1I@81@?xDy= diff --git a/images/menu/menu-admin.gif b/images/menu/menu-admin.gif index b5e71a297d511fd3cabad3b8599bd9f81a212351..60770590e1276daf6c4effc2e46965e29ae31601 100644 GIT binary patch delta 721 zcmV;?0xtc`2G<6EM@dFFIbl!$C;;XF08*8@)8Ojr@b$aT-;=e@PmQ+q_xd=3u*cZt z-{|jRm%MbL!lAy@ajMDN>hgrE$f3vFuE*J`%-o(;qCOJ$lR#Q-uL?ayVm7@N07R)(BjD6>iPTqGljBb zqQyy(x{bTkwbJ9p-RVP)xa#uvbF0eZ?)4{qt)|J{(d6!;$K0O9+hd``aH+{lle_l% z{7RC$Z>hc{wtFDZ#ud;`+v$l`7xwN{xgSEY?zrd!#!=lAYMhy-+ z6NDQ-B8UP8i2(tPN(88pG8Q)#J%b=4N;QWI1_lp^*S5$r5I7_qOCKD64n-=50|@@@ z*k&PX03=0{5i~S}ID+Va0RjY+92m4ffD!=$un9r2qOuUOmJW*Qb#KXA;F*o1BgWbmLS0P zKuO9a2{a-YBw*~406j^6<{ab>>LeHvv|5~i*};S%oJ#WMEfA5=0F6DD2ndWeX~}J8 z12$Tj!GjVP8$<}<5yM9z1~vydWYAT?psj)f4`!QIsW!HXVMS`J#0HTi8c0B(5Ta0m zr-KFvaENVz$v6%Nl$zrkcG#_wV7qiYlK~eOL7FyVZXxKYvjF5fdOO10GZ0C;lB+NP-Fu5(of0 DFalbN delta 756 zcmVKkm7k=dtFSppPE%lJt+l(n#K^L|#pLPjk({E2k(aNxyf{csUu|=N zj+J?Zi)(m(z{ko`U}m?##(am2lbxfWsjs50w?tD}v%0;1w7ig`u6$z`TP9-{{H*?{oLm9+U4;4{r=wQ@!90> z*W>QkLo_S12;8uduH?RgK_x3~kmze-HM!?Xca$H>XYAUhz+$4djx z(>XBH*T**j+uYp&6b}vq6xt+2oOLrU`7-I35c2)Kr{h?s#l{}eHvA3)~!a3 z)&M}ZtXT~jCV!|sp#i{w0%WNt3?N(J0A0HP>bixS7q4EkW>ZWVOt>%x6@-mon4$xN zjVVF~3}&!ka^)$Mrz~J#xpU#dU8IN}J$i%z(m+^@km7^H3j_m18$ckNwv^dY5S+ek z8#igvNwf$bPQ1AB8ksrpevH+URJc#)r1jaH+|Xz1IBw z{*%7eA$qGbg|eE$*{;svUY^2qtjmzTVx-j@VnZ2XJYrf>OkIWw2nAyS3@kX1NF6(O)E+Gn<3&k1F*R0*2~wzl zn16!;h#63DU8Q#K9*K~kqQiv;5+1zB;-F9h1c};}6F|^l0|Vt405rEii~)23%i$bz zfWgBAV=Ut2=%|{7F(q0+`7%br4;B;(F%W>rB7cN21U8OQcVGe601FamG;kmQ0;B@} z*ft7$hwTZEYl09fZ7t?1~*DfTqDQ2@n#pSioX~ zN!4zQ@jzmX5vVh;WF_>{(13pg6c}wxAne0(8a-Clh%szr1voESMAx^G2n|y{TmVvp zNPi3yi3f2ebl`1R1qlw&eoT;1?m?BcGX<$&fr0^#JBuOys2Yk1NrXJ%GU0=VE71or zK(H<#f&k?aBmiyIadm(J=Ui49WeWs=mOBgR6qI`GHT6gpGGL$q6-`Xg0SGi?a7bn| z0Tmo@I@uK5Pv22y;EL`PKn?=!ytW=_k3-}T0S6I`5JCkZa4U}j$_IqW|Z$1d6V1V?8U=-4)rz~83^U3?m58nR&|DSi0-cOyCijbfh8if`mdzU)#oq4P4wztZy%zP2HaQ zp1<%cE5lafwG0+#W-_Mr);+k!P$l5U-WZo?8NZ-^$>h(+%*MyWW5UD4$HpBS zG&xFumv?HG2}^>lJ*IVQ zL-#J;mDO*-z*KPj472&!sPp?`Czo8gc;Hr}&*Y}N0trcli_+QK8D}r%T>Ii$7LS<1 z0~LjP4UC*ZIvNV<45IcAjdYzKxJNUyg{)%S&B$=!SigdEmyGA8B_}6q$n&p=Ik{=+ R>FEZ^r{;KmcI05N1_1F+kVOCh diff --git a/images/menu/menu-calendar-over.gif b/images/menu/menu-calendar-over.gif index 3232f67be2dd15f8f32f5bd626d9e1ec86d539cf..2320709636f1371fbf719551aa360eb9da9ded88 100644 GIT binary patch literal 967 zcmZ?wbhEHbOk~htc*ejGG<8>AUS3yM*ZTGA7cX9X^XARRj~~ay#eMtsZP%_{=g*&i z`}Xb8qep9MYNk)0e(>PIjT<*+WMu5zxwEykb>F^y5fKsh?%hjDN?N^ob#HHPeSLjp zW#z(!3-8>ybMfNE0|yQ)S+ZpR{{3_2%$YG`#-T%pT3T9m?AY=5@81Or7JU8sb@}q; z{r&xYeSH%qOjxyQRbyl0q)C%DY}im-T>Sm}_vYs2wQJXwm6i4M^c+8a{Li01*RNk+ zw{G3!$&>T*^EYkUG=Kj5+S=O8%*^QM=!ArXprD}p_wPS{{(Q=mDRbw}?d8~7O)d^KqM$m7}) zw6?W(bar+3^!Bwi^-r2SW$L7f(`L?^-8*B>`~|b-EnKp+XYsO?t3p<+UbkTF`b{%8 zZr(P1`_5@wckON8v+v-VLq|Fe9Nl@m#Ysf3S)5%pAeN ztc+d3EYp~Sms}MKwh;+d4>srW32fuxUXp!wCxlm{>Y*P1Sa|kig9RRD{7~dqNju3FGO9 zONty09-byvSX2^nmRXe7aaPI#qr?tg;Z_k5hm?zqqD;~&S6FXI$ZlZeG?B6pU~oLm zl>J|N!eS#n*=9{%ooz>+t~kNPp&;Xtz{q;CVQ=#mGp^O=81Ffj9uCrUxU4Xhg@ZFv zBw^#hC0SPHF$*3&$!wL2;M{9s@<5)E%}r96;rE6)Zv9hClUTTCGM?)eyZABp%EFc| zL8hb&2N;-JTDrtJWed2cIW{qGk`-1dsTN3m|{i?~U0I^H9t>eMX>Gkd0Ok2#sz8-MCi>I~sYFTE5PtO36O Bh!X$+ literal 658 zcmV;D0&V?ANk%w1VNU=R0M!5hrLD2b&d+&?kL&B}%FfWt(9+}N5~iI$v!kd@Te*pQr{+}_`Zl$xQduhZ7o zv%0-`ijbC}rIMbbnx(0Xn4RS0<-EeguC}?`-QBRbyTQiE+uh!BgNnk($;8Rak)5Jz zeT0sipoo^7gp!!Dxx99VjnvlIVt0RDb9+^6by;tCXncfifrxX4je(MwikhN&jFVDn za{vGTA^8LW002J#EC2ui08aoF000L6z@KnPEE34t!M%nm%q0p?-l`d05s5ww160LfHsRvqXgu+#)KF?2e_QjG^W*;G_q>l z%9Vx&3?me*5J97Z1q&QFVCbNrKvozQ3KUR4qit5ZUNICHF_(r55d}2FrO~&mVH!9R zD_+c4@rMsD8cUu`xw2)+IWlYB%(=7Y&!9t#9-Tvn>C>oFt6t5zwd>cgb@Z4`ySDAy sxO3~?&AWGx9l(PNA5Ofu@#DyoE8oGRx%21Hqf4Joy}I@5Jc0lKJI=2@tN;K2 diff --git a/images/menu/menu-calendar.gif b/images/menu/menu-calendar.gif index 4521b6addb0969dcc6a722c03c3dc999666b6c53..0fa7cc08318dc9c5e99144affd6938e922cd5d97 100644 GIT binary patch delta 908 zcmV;719SY)2h0b5M@dFFIbmS{C;;XF08*8@PmQ+I;Oe2i)RVQ&bfLoE=8ksrpevH+URJc#)r1jaH+|Xz1IBw z{*%7eA$qGbg|eE$*{;svUY^2qtjm41ejE#-4^b8%K8FJcVqyXTiedzRmIGp> z)f-|%8DczQT2f41h6)G;V*v~-IFLvkJ9pF`EfM2INjWh!R)`5wsDPM%g93;dP;gzP zcJCgEkf5T&g$EKIyvX99Pyz&r+LaSP&|m`tmbOFoZ9CLud!vte2;^gS4 znuReXT0r?SM#2vk6bdmAfXE_$gfRp*j!}1D0oMQv5@8S!*UuuR@R6yY-9yEFIq&`w~+`9Q$Ab(QiMo<3=@e5aVB)& zZCC{f4$yu~kWlVHm9;YksbGPE0gpS2A^xZuiU~=CJmE6ogNG~82QfgfE+B#c6x>hW zQD)$Z?i4@{0`0uE9%zq4a(jVL zU1R6$@TIW0z{$^de}h3zRK&~BbbW$9O;d%Cm$JLVXK{6Zke8ffZgjD@y}QNDsIRkj zeu9vjqqxG%+uq--v9#sr>CD#OVQg~h?(x^)>5`nIVr_HU;N_EtPgp1DC;DwEl~HQ(t6MUuC(##(aj2;pgqhSjV`TO+u`uY3( z+~)EA{{GtL@Y&?=`~3aa%~1&CbuzTuVVE9wj)@%`YC=-OwH{-r~_+ z<>u$;L{WcEKvc*u zgo=I?CPuulLE}Jw0YZu#NiqTxk|7}&U=Tq_00R(08esq>!i|?F7#N6vA|#3kE2$U= zP(eQ+hGHmHFrvU*YASi$jA`rlVfdWV<--ZHw;o*lMhWKF% zEl45ai72M1;)*Al;o^%h#wg>AG}dV2jW|b|A;yk8_UPk}Kn5w~kVF}sUP?o(xjkq6ps$-$VLyov1 zdaEOQtU`{sMUS~KgR$)N_@l_&JBhV-t;{ciuvnYGFM_duH;1z`g|dUR(1^Iw@Adgd zkh*QB$nf_0gS5|6n7$-?tUimjWTM4RmAqo0#G1m{If%4doxvY@tBSePZ>h=6;q2Dt z@A>=v(Bthggt1bWzLLGxtj*t#ywx~|v>LZ}?son$w> zd}srE%AW#otrv7y0}}^-116k>fNQ%72Iw1LK&C~X>zyd=H3Od${0D1^@mH{u% z3McSX=1`ehw4{Xr2W&M6X>$?6PXa^@qCgf6=%>X~jqQhs0|X7iz(w6@0hfV9#iSuy zgA`y_0agvhfB^vnH`Gd`)plSO=sB{(Jv@-0LIqCT;{$z%kY-?iQiO>2)I|1hM&thi zWEC)x16d8n4~2ukg;a)A60(*d4hUc(AxT;3VS`$PsL~)rDi8obafQ{-U;?mtzyhSf zq>^|u*4T&*H7G$v1`@;&LJ~-X0AwKo7(iZr2JCmFQNSgF6MwyHN zR-$qSfH%NKcv`C`BM?AvK@=Zk@j(hW^t%~n1H=YtgaqDy*Vv zb#b^_aGNC|0x%HJURiaBZc(X1msVK!pxCHb0TP55$A~eYSg-po^1uTd(167iGGMU5 z&XjOFQ(MLc1FR@UAAKk_wlwYZUP(he_0^>;jrG>Qa_zMzUx$r})?$}UcG+Q{jkecn Zuf28KZeI-!cic|TP4`T8-+fLX06S)zL{tC( delta 1109 zcmV-b1giU?3Wf@QM@dFFIbojw69DD_0Ed;HskXpdX>f>^p1{r5o~yNdijtF{sZL#F zLsMBpQd!K{Hb{ikF|w+2dt&duDZfW^{Z}TWWBit+mhFn*L{nVPF`e{qN-YHaNFkaEIdNm>+{#+?vo(_Y?CknQIm}U4S$~i6951Q|A0V(gM@{Khlq)ai;RtqkC2g) zla!T~mzbHFo1C4VpP-?lqmwoWG^nJ6Gys(ar>L!}K&-QdHUYMT35 zxP$-&f&{V$0RaHHK+OvPz0Cj%g4WlA2hxJi+~CXN(8`7v2ZsyggVzNB!O_zJ2Y=1% zf(!uj%-Yw+QR}x&kh}v0?`6Y;Y)}Ck!D`V`pzK1f05)hCAn+=H0UCl3NSkJ0L;!OV z5f})dQ4kH41uX8eQLvComIefw>URM|KO4OOC;$;aq@a}mfC9m&kw7g17YY;@_R%8( zK|)O$wPXsFJ_8g%y37g00End!Lx1W^YeSaH5v%`N6;Qy8Catry+@d`+x9+yKI%OdP za1}`3V;9rrMH`HpQXmSJ3B@WF5su54Gh?>VKr;>nHeg_;G2rq58aNu**enAT4GK73 zWQ2`_!UY8_E|bP_dUNO9IDlWKU_*rG-j_M!P`en5#F5Nx2YU_pHj791#mo(Kcjz(Nl6owgnY z2+G%>di?pP;CVJM$R365<#6GI5LA#u3l+3?VSe*Dm;(h4aB!l2=Osu(eJ}cl-VHR? zXk(2wOkiUK6?kxh4Ia=)Lw^Z0CSbu06WCCr{{#+1K%0M)H$(vB4Kzq_0|qu= zaDxR22&pBOW7cRvk2UJZrI%pRn4_CI-teXb2{^gJ3O6uW<(o;?m}QkT#z5o^MsC?< zo;1)XL83R>Si_@`MhdA74hUdr1|&T2Xa@8bMw(IV@@0t(-y!6&<@4fiuOK%7!=NGGlI(o8q)^wUsBZFCP* bS8esxSZA&E)?9b(_19pBE%w-02Lb>)NGli^ diff --git a/images/menu/menu-expressioncomparison-over.gif b/images/menu/menu-expressioncomparison-over.gif index 61b2fe6a4e1774439ef1d0293b09b1d6db3b5d11..4ce17363bf90575a0872c241c9995b04ba6eaa64 100644 GIT binary patch delta 1180 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 Vis038XLoIVeSJgnW-b;6YXGz~IfwuN literal 554 zcmV+_0@eLTNk%w1VL1R30M$7FsIa(%ijY)TTUA(FsIj<^m!7GyxxdQO=kN7wadj~= zGODthShSOHDmKK+oCYJwHI`@AXMcPVV#g zcz%OoWocGeTlM(+g^Q8y^!VxT_0HJhhKrG4WN7R0_L7*MwZ6x0a(4Lo{K3oAVP$9~ zB_-J8?%U?@+U4)rR0|Nj60000000000000000 z00000A^8LW0021vEC2ui0672?000L6z+7%~!x@jrq;kn@GIKJgbV_Z0s@Sa5r0sf* zh-pB8YyrO6uykBLqpNBs`)D>o0)d0^5O@^&IDdLZ009M4aZPhZbqy8`1qylqEdmV* z6(yGzMjQzM0s&HqOaTf4r~-8rhd2owIFt~vEwhw34=s}lQW-A4z`?&01Hml>F2}>g z1TDYK&(6&Q)WyQW88O=1+}a=m+${z%3ga;#EHMTx+UxD?C@m}9^xGmZ`1$(yBm?>_ z3t%{KfDgk77z$FD|6epdrFV1}#pee1Y=f zg$@`zbkIms0*#wEbL!m5v!~BTpEM}c7)rFL(W6L{DqUKG$c?8^qe`7hwW`&tDr{)o s%C)Q4uVBN9wUHyljI(Ids$I*rt=qRkK2VTBx31m0c=PJrt2YP$JO6uyulDx#y1KgA+1cac<9vL4 z&(F_JPEKB4UhVDemzS4sZ*RrL#cFD5+S=Ob>FL+9>7n3(kR^kZXV+}zxq zot;llPqwzUU0q$Co}TaT@6OK7(9qC+etuO|RjH||jg5_C`uh5NdwbsA-n6u|@bK{Y z`T5Am$aZ#iadB~kgoNzu?4hBd*4Ea(zP_ugtINyFkB^Vt-QDEmwX z00;koMuLNcg@%WSiHeJijgF6yk&=^?m6n&7nVOrNot~edp`xRtrKYE-sj922t*)LP zK^U)^3MmvB5-x`TMFN8XMFF&jBOnqE8#+TThP}Un!NbIa9TO1?IWiDH7cm=z&%nae zg9sG`JVbv*MJgga6)X#b;?d*)1ndJw0!0Sw4-n)tAPAqnP9ZD^slkq&4+|JFAfVT< zVt`=#dI9KnU_pZ-9X~ceP-I`Q2A)t4S);R$WFir80_PufCLU2f*@RT;Md+TgC(z8EsPa2 e&~l(diylq7wCU5RQ>$Lhy0z=quw%0d1OPibav~)F delta 598 zcmV-c0;&D)1^WemM@dFFIbk^f69DEz0GXz$dyJC8$jigY%zciOfRLA&r>u{iqGo!6 zg_N3ymYlA)yM&XOTylD|yS{OQis9npo2RVT+S|Rv$HmLd(A3qWuCvV1)5grsq_DN3 zt+Ab{u4{jWr?a@0qo|swt-8X+m!+y~fQQ)I+@PzkXM2KL(%9O>%FLgvv7V~0p{=sG z!Nt_t+_b*JbA^q#z{8xWuXc!!;p5}9y}-1+!r9#2;^yb;>+527e^qRCS#Nk=b9)m8y=cho*)P z000Pv2mlQSy+Xgbh5-Nvld+AnhP4S22?r3m0XG5(3l}ff5{4EF0RjM$$&3IH0_Xy@ ze;3C>3l>7u5Aiqi)Itq6(-4v$IsX6y{);dm;0*#f4h}3x;Ksj(4;?lfK(U}efiQGv z+{jVmh7%lb6wo1Kq>c?BbQHLuab-)EF>Z+HNONO~9XNC9#7TmJ&KnGNIB1M0b?fNfiZ-t5~yM)qo-Ea18}GILxR}LBmxAH_oQTf%Yng2{l+SOwdYK z1(3UV^XlEpx3Ay7Kr;9kOt`S&!-x|rUhIR$kH?TBOP)-*vgOM^Yy{cNxwGfbphJru k9c0Lg9;j2RUd_6->({UanaIGSw(Z-vbL-yCdv_oJJ31CA>;M1& diff --git a/images/menu/menu-home.gif b/images/menu/menu-home.gif index 2478b84a7afd3cb4069a644030e3dee4385457ad..3cbb341c0810ad09572b5f53aff43767f6574cb2 100644 GIT binary patch delta 625 zcmV-%0*?K_2JZ!bM@dFFIblu!C;;XF0F$-ObfLmejkck_)b;oJ)8Ojg=ht$+smW}o$oKmEtj*wmXr#uJzt^G1+>yQ3w z+vwBf?tHP%TAab_^Y}N1vxBtI=J58s*XFp@yo|JVxYv9z}W5d`2YX^ z8+NGx0001!B>`xYFaaljA^8LV00000EC2ui08RiX000O7fKGyggoTEOh>41ejE#E~E<~W$uwsB<`+5QBXW)T?CLKR2XwYO| zFa@4GRBSk;P(3Ho5-b>Wz(Bu!Hw85TkbnTq1Dz0rXu<*m1{6V>M@dFFIbk^f69DF00P*$t>hSjM^7t$~LY1GSw7+$!ZtFYJH;WQ|{r=hH@7(6``TP9X41ejE#(gRFRUCl$Dm3n3)<{oSmMZprN9p zq*_u}sHv)}tgWuEuvbz~w6(UhF+a8gL$|)az`;*1QpLu{#YHT~13Adg(9zOTIsn$! z*wzF%*aI8ZCEzZM1QOZu04@Ud_xScD4)_BQ0tzrFph3Zg00;vd zC}@Dh$U+SEd^CXIphUilDFSHR$WfyZ3JgLr7=R$aiW?ev>YVFs8nAPGwf z9djOG!n3DOo*oSN98iD>QJ_K#4B)Ah=~ATzq6+=_GlG+=ShHRgAtUR5fCElcfOR4Q zh?4^YuA)_&w#EPxTAkx!4bY^n-Me*RShzbNL6Zj$>Q+$FB*B2Xh7libVj*yo9(W^j zSVFn7Wy%>wSRSxoNr)g9E@Ys*U;t^;OG;A?L88J45|?8Wu|m7H?c2C>>)y@V3WqGf zg9{%{ytwh>$g@PK!o0aQ^XJf`OP@}?iUus$vuoeZy}S4C;IV9pFr~ct^XSv7U(de1 VpcW^f$e&NYzWw|7^WzT$06SMpl3)M; diff --git a/images/menu/menu-licensesinprogress-on.gif b/images/menu/menu-licensesinprogress-on.gif index da56e29107b219cdd505cc33a288652aa8fb2f36..a2f2b487d3a8de1b7b663d30bcded4cc6cadc4ab 100644 GIT binary patch delta 925 zcmV;O17iID2)hS=M@dFFIbo#$C;-&}0HMCrleNy%;Ogq|^-qnqQkA;j=XCs$HJKAbG1Qf3HiEyJ)1w;qCNJmAq1yzDSX}w$tM! ze65g*NGuwU$fR<~ zY&xINsFW$3TCdowb{nm7zu>SK>>ZoW==7|tZoA)4HhfNp%j@{O_^$8!t$crigGzyf zhlhrUi++lXk9CfalWvlfmuHrkn`BclEGJ0;GDZLceWL_S1Tw9y1__gzGafS;G8`@+ zCPt%(seh|70Yn0)keVwp5D*m*Dl#Y$MZSl?ORU2~4l=QinjsYvM7JO>)1*bFLjbR_ z2?nhVLjwlz2MaUr@k9DD@-qPrv;xpe1_4&ZWEfCI1RIfU2}}uG5OCm-1p{Qz6EH)7 zJp>F|4Zw#$z$;Z1We|+>hG00R;%O<((0C#sLE>3m#NCL;%Nzu1-=;JcEI; z#(xI3MQ*(IpMigt0kBgb^>SvtO)yYELIH!|bf*-YP8*uk0JM}z5m4}oVsTOnOsZu# z)!q8gqD+uBB!aktgG-~6yqd`Ib^GOG zzyYd>asX^;ZI%sopk)Kx5T+5)Kx#6q)_(wbLl_Vg5+zLr*wBHvH35MPBg_E93>_$g z--BZ{c7RhHb;Z$t$qDtDM=)|_zjC7+gR zhNq^cngpt8q`nEVPXCBhDSjIqcP5d;7`DA}P} delta 1015 zcmVf>^o|B-dz|Ge~Qd!K{>+{#+?vb$^k-!a+zzvbW4UxbNk-!a+zzvbW4UxbN zk-!a+zzvbW4UxbGkPI4>$`8rKz8*g9Q|`iM5KSf&d1&p1VW=1cMX+0I~r9#=Zpv z0JwtDvP1>R2Z9I51%|7|*Z_vT#5u$S*n$bo+JfT9)B(kU%+ADr&9>Q?!{xsT0TK|A zpdtW{aYS+)Y^6ifdLYOKm28| zgN8!Jas}UgJK63B1ufuK)(aQMfE}LSat8f5ufo4OGJJSYddG$w8#2h9-J`bc+qQF5 zxP7+=gB%%b|JHz8cWvW6G7QK;+`|RjJv3}E0Nr@+9@lMuXRm$zw{6coMhvK3AxCZS zzL`TO;aoU`4bXA(m`}ex{Tv+XN5C;3$BOv~@PI=J0M3V>f%yf9Kn^hQ5CH@M@}M9O zGI(Gg4+riypN9JJ*CBlkT)+beIe@^!1q~no!b<%`K;M7`MhJn65w0-8h4$&7Zh91UlvrLX=Yy*+2?Arr@LiDCjVO01aT!qYhH) zK%|am@|fn1Yn~7!1T5@`fdDgLkb{l_ENSEfPD06o06=!20}4SlaKe~90-@-lj5g}% zqmV`_>7ZqiaYU-(KsE%sF3pK=Gg9)j|8tM#w`IAc6?M7OSfe$R?}ovdlK??6c5DEA6z@R%@-YLu9M%w%m5>?YH2D lEAF`DmTT_0+XkWTy6m>=?z`~DEAPDY)@$#*__7-a06Sq703ZMW diff --git a/images/menu/menu-licensesinprogress-over.gif b/images/menu/menu-licensesinprogress-over.gif index c38ce742bddd5f81e038ea3a47e44c2eae0846ab..2d2ddeb034f2cee7b037f663f883b737c118760e 100644 GIT binary patch delta 920 zcmV;J184k$3A+b>M@dFFIbo#$C;-&}0I#pFqobqQ+1YMxZtd;uQkA;n#k#t>&(F`7mzPjbP=SGgSy@?gb8}HqQEY5%u&}UIRaJ3uafykE#>U2Y zczAVnb&ZXUTwGkj!ovCa`JSGh=;-K-jEwsF`kb7cPEJlFU0q%H`1o5}TWV@*Pft&O ze}CTI-sk7%*4EZnS6Bc4|4mIzlMw+blZ^olf29B@000L6z(Q-fC*uJ8M;e1C$2N`ZujhlYrY zeu|8bb&imeZjzLjXO@_oWK$g?CP@J>MgRnTqXSF>Fs-cy36q*JFEJS~9ta>QMx%(S zf2%M7L;|Ofnj|m~5FrpOFdq{|zK6g|tiwYNFtLxCD=iX4w=OEvq(!Df0I#tL2CWT4 z1P1U23Ni2TL;5iCF#!&=0?-S_09M6d7*It783Q>ffnI;k*% zW|0#W&Xqb9vIxX=2Za7(7o)*}1qig|jS)A-0Rt-w9#lC*0LO-|PEt-BgMqQee+ITi zZoKxNfq#|(uv;MYa%R0vE?_`{;ez0Frxu(}8=4dWw3JB=Sn!HsaZ(CQs%1FU;8xFC zg&k4X@pBB}jE5{(i#%g!f(!&6AQ-)s0P0ktNRT#Ug1CZ%OQVy#n#l2W`{iT60jh~| z0BmV(mJN2GWdqz0rV-IVYA~$Ue*k$y7!VW^B~1p{(1Ex$0RapY#DGE!tU!R@gJU&z zfKwcG#nFGs3H6yrFmh$Udz}5WVRZ_2<{gUK?? z7Hsf<1~6#wzy=l+6xssZv7-?_{VXIDa*UB#>JDC3xMCTRk|{W}GWwq|s6x zA*Y{39l~(HFewR8=Mu9F5djAgZ~}(_2&&Pjq;4d@S&MI6ifJ1mwen*npO$Kdr>3Tw u1gfgGN(8H}whC*ksm@AkskYvVX|B3*!fUUX{0b~3!VY_kvB(k;1OPj@`IS2W delta 1050 zcmV+#1m*j?2ZITJM@dFFIbn({qK5ke;J|*xTH$x4W^qy_Tb>V|ReF zyS}Njx6jknueiK@j+LvmxnFdBbcT(FmYmVm){2;(X?=x}pQNz5y|lf+$+9=ccYjrEbzXCOS#Nl4frxX4jc9y? zfs&YdjFW@~l$la#a*?qdk-!a+zzvbW4UxbNk-!a+zzvbW4UxbNk-!F#%?*Ey022TJ z2mgRkf`f#GhKGoWii?bmj*pO$l9QB`mY0~Bnwy-Ro}Zwhj79;300W|nq>KO;0}v3U zsh_KZ1`e}{wTh>L013ICyHNoJgAM=yvH<|bz6J#VxPsBLQ3lBef(OY4hO5Qc0EWH9 zM#Kf!f(y;sg5t>30mXvM&cuJsw%M4&<-ZF77DSwF?Utc)QdO)q!0#fIf)0a6{3U_ph7kgcWTyTzU=Y#DAcWo;!*C`}pr0 z;ecO)0{aTEU>^cWD6qnS_U)G-e*_|6gbztb&;o%;G?+vYL*$o)g8tdpVSoRDc%KO= zB;f#CNu*!`0uCr(1b`CUXCQ(Uwh$wQEC``ten<4^7|%n8UziQb{gpt zpoS{ysHB!^>Zxw1rmE_yrp};44>%Ap1FN)>%EYa>=Bn$iy!PtrufPT?tgk$L@WHUi z_WH!K%r@)nv(QE>?X=WZYwfkzX4|Y2+;;2jx8Q~=?zrTZYwo$|rmL>EP_*mryYR*< U@4WQZYwx}I=Bw|%?*;+@J584ofB*mh diff --git a/images/menu/menu-licensesinprogress.gif b/images/menu/menu-licensesinprogress.gif index f488b34812c658bcf605caac51e6edb20dbd592b..a2f2b487d3a8de1b7b663d30bcded4cc6cadc4ab 100644 GIT binary patch delta 934 zcmV;X16ll)3cCk?M@dFFIbo#$C;-&}0HMCrleNy%;Ogq|^-qnqQkA;j=XCs$HJKAbG1Qf3HiEyJ)1w;qCNJmAq1yzDSX}w$tM! ze6504M+e2LHgq zY)C8`kI1BQ$!t2G(5RFtoLaBgtacl%a=+lP80;OJ&*=25tZuvCPd0o`hs*2uy!fu~ z`>lL`f`dwdgolTQh>L!TjE{AWkdtnbl$U3gn44r%F)SxZ0WwAa1AU_eOawBmtp*8` znlm0V88RF$A0|elh^c?8G66&ar;wT}G7u0I5Gpb#5krkD4JB6GXQl zFVmz&rb7U)u?YsP4MPJ4@COSs@9{(WGV(J44zvQ$O9lZ}#bg*zMFbm>Z3#>XTo7>J zkOc!|&=W92fIS2ZS`EO5K)@?i6=e{N^W?z;BO*vhcu9mB5p{nHR3f0alOuuu0Ssmg zI1sB|M+5nE4)6&S!GWOcx(!Li$^ZfaPm4I5fxy5ib`ECbBseO7Qw0EJa1?Mr6+3(Y z+QucYvw>5n+*mr<(1K=>5*yByIu)`A#B~RR{$n?z!2tybwB?-)Bv=UNfA)+ ziehn63rwnIIMv`*&sv2YQP=VF4B?E2C|HX;V`zd51Rfw5y_Ep!RH96fHY9?$f`dz= zlf0V9@pb#FDbcA#Yg+z_S_(Lic4tk!=3c|#Zw6cQy(2H4PnxHSQR z3?s|{!welLgWrQ=HFkhg9CgLff5{2;nMW{kWx#u!{j_0q3U=n*3|l=Y7H6XXaMqC+ zCWp@`3kc^HH$4IsA`==|@W2H!T=0Me8Wa?o0^G5q5kCDaBouOtrRfel3ZW#BTKy$> z-H=7zbXsOgD`BM3QXL_upG6(YaKJDr2~g(}vkW0Y3KDPvhX4qw(WsRYpkixN^7aM-im3ix^lv6ubBJ_EG5DYdyKKj I5)lLdJMA%_XaE2J delta 1293 zcmV+o1@ij42bBtcM@dFFIbnRoGb*WBS} zb$nlJaz#{HQ($I>k(W^jyv4rA(9zuG%hcR|zeVnJQLsMCnqN}{d&#Sb$&DrCHkd}RmlWBH+iI$(>=Ip4mxlvzc z%+l4_-r-VUW?E@*VQzCrRa>vOyg5lu&DP!V_4(@X_TcIA@&5k)`~3aa$U{Mh5~{Qdp_000000001yxe$@f4S$RP6951Q|A2CWgM@{K zhlq)ai;RtqkC23Sla!T~mzbHFo1C4VpP-?YbEKuFr>Lo_tE{cAuduPQrggQpx45~w zyS%-=zrex5!?$e4$H>P6F~~tf$R>GI?`V}JH!_51w&=4b!|3Jf>^fj|Td0=6JPz#tj~1QG%ykbwb#76C0fM3aG` z34kUTW*CU3;6nx-36Lc41R#O|Cp!Wx6Y(R!lnVheK!DI?#DEYba`Z@Ypn#)DlOi3E zAn5@GM-QNgkRXBp4?GemIB;~p)&n89T-8zaXoL<4JbyqH(BVLWrb_>r3Xn>+tL;`EzIs95#>k41Dy43u%BOPraFgl{8pruO6^@ z_Gad+lYetSzPUo~-rxa2&DP@pFHZkOlUI0-fi)y5)=9+2_kiwc2G>~QkLZrEX8Vw|2XPR#E z`R1Jq3{Zs{6c}-*8i1@g)AVC4KlAyr{8b}a;uM-rYL97G7fUL5+PJo20 zNEBPZ3;}3Rzyv4I8bGoE>>8`Lvw|zDxJ%&r0S&UAPyiGs3=nGp!uF~`vB%O-z^x<% zFaxd=ETJu}a0D#yzyud;@WBWttnk7NFMmwM2MtGDup1OtZ1Hl%7-y{U#vFI-@y8k~ zA;uP2OrZqGC}aG_$}G3+^2;#CEc47X*KD)QSJY6$%{<3!$In0qE%eYt7j5*>NGGlI z(o8oUG#yY!E%nq?S8esxSZA&E)?9b(wbXHhE%w-Cmu>dhXs50A+HAM&_S<6z0s;U# DTJMY> diff --git a/images/menu/menu-myqueue-on.gif b/images/menu/menu-myqueue-on.gif new file mode 100644 index 0000000000000000000000000000000000000000..bc8bfb8a756260b2de2b943bdc658942c8a61c25 GIT binary patch literal 1039 zcmZ?wbhEHbOlQzwc*ejGGA8LpUydQ%c6aYOW%$)XCEB9`%1cerC!s958r-%{_(qG$0gmy z_12wR!)ESZaP0QHqqpt4w*}AGxA?@J58r-WfBxaYo6n~oysq1H?)cqTGUY3KcU{?d z;Zf$Y>|!5` zH$8CJT6M3=Hp0W@gcFYv7pqB9!vu!rem)g}3l|$082RQqu5nE~cBoZdONC3q;h+Mu z8;eYd%L0c}%IsVM4cji=?3emu<`W?@!J)~KrG%}(Kwwpa6H|`Ro?Q=K3bMEf$Vdh> z+z()LW8>i}xS+D1?fCxZ9vEUVmV-SCSUb%TG{bIl-tdsW97t$LF|US7M{-6vj?bHgR7^*_KCs zivlgKD@eZhAjJFs%$FO2_an_YN}|}cCS7on=R9zLk@3Ug2@xrKO+BUs$vzD8(~Wzq zoZ0yx;UK%sjHCz^o)UMT!2LWAuG-i(eOjz5FYA^*ch!WQ%e|i5`T2Zy<1b5%g|8cn tGmHxKx?apUV`=5Hc+xMY%%$67x-<=1-FB_iomE%mwPMjUA#Vi+YXFWHw(kG{ literal 0 HcmV?d00001 diff --git a/images/menu/menu-myqueue-over.gif b/images/menu/menu-myqueue-over.gif new file mode 100644 index 0000000000000000000000000000000000000000..25d916f890dc0b42bced932326bd204331a7f331 GIT binary patch literal 957 zcmZ?wbhEHbOlQzwc*ejGGQane!O_`;&0!+tzW;srluw?F0QMq>+RdOyLRn5 zdh}>sUf%TS)6btjzkU1m($dmRn>W9G`|j-7vmZWuOifLlI&JEfEn6Nuc+k|;v}ntD8FMQ(0xXlUr6Lx*P1o_*rP2|qu-@87?tr>FP!_HNy}_1w90)z#IX zzkK=k?_Wkn#`EXT3kwTp&6*V*9UT!7arp4z&!0d4|Nr0D*Oy`F03DE1L2<#r{=b32 zt+}POt-YhOtGlPSucxVh(&Q;qr!`NUK5O=z{+V+ZESx)k(b8q}makmZwPf|W4KBxve-U09%<*_EZ0%ayU0 zo%^~gH~Xo6%V##4&xG__@3^wHFg@&H=VbcE#>8~#XVf*OX3Jt18;M6^4hI#0x;mmm z8X6pw**QdhsGjxU6u7Q&$Kl9YhbBi>6}F5Ayh|ILm}KgzcRpAm$l@v>A?fhomK&QZ z8xNPlyZff>d*oJD7_4w_b5ybmnGw#i!j_S>LrU>NLO@e*OOupVz!8tLjuwIrcRDsR z1}t>@-|jLajA&D)*B zuQ_{4UQ*#^51eo#%q;cPjz`_I6)$C7o}Os!anv^BdDNiX zkMh^V!qd zQ6?n}3m6aIl}K10Zm)i>m#t>2Xb?}TieIhpLsd>5LzySdX53R#U2<0NGF>TcpODOF z$7E38z;J!aVqt%GUZ+J~ZW5vs>-tJkSa=oBBs8nVSROi%y?w`xlMH5#hr9HClstXh z?<}@5dE#oB&J-mrFTG5!$$ni-sZ+KDRQ60g?9;haEh;b5b9!75Q`(G4EKCg60Mxs7 ACIA2c literal 0 HcmV?d00001 diff --git a/images/menu/menu-myqueue.gif b/images/menu/menu-myqueue.gif new file mode 100644 index 0000000000000000000000000000000000000000..f574bddbf610cb19d6e5babd658af40b9bdf0204 GIT binary patch literal 1039 zcmZ?wbhEHbOlQzwc*ejGGA8LpUydQ%c6aYOW%$)XCEB9`%1cerC!s958r-%{_(qG$0gmy z_12wR!)ESZaP0QHqqpt4w*}AGxA?@J58r-WfBxaYo6n~oysq1H?)cqTGUY3KcU{?d z;Zf$YZ}C|7j@2^JAd(tl{1#k zS-xuhhW0g+*KORke)E*B3ETJ1+Nrv=WzW8&eFqLTA31hr$ ziwkNbd^*v{#8S0TXURKv-Wq8&g;(wh2Njqsm@R&M4{=arG+~U2eei{YNtvUMN25Vs zgISrGja9-zD84ys^Zy09(t^nsy5*Xc3L*+Go`~#a;#gxFbl~6u7Dvv7rY;9g2(D}1 zr?f%x%j)LMnf+`2T1;?kTI0N0u&8nUVFl?Q9y4B4v#j=IZWiCO_2%ajkDPkt%crhs zcr}rY*I@P3Ssyj8UbxMZnep8xM5j*;m@~6CM&W}NMXqNXCM&krrPv1G=NRP?MAfGUz31NOGWYC zV#ya5gm`}+d2&PWZlL*zNLIO^3nh*+oCgjtGCoKSh)CXP>M=D?_Tn{Pt#>oxEL$HW z9AvlY2%4eHlOx{U_iBZaL-_j&&4pDP3Q{8G6iqWyoOg7?OPTrE$1V#jaN?YGX@1M9 uN9l{U>73Hgv9jaRG&tySif8H6s9WkwFJ#Q(S~j=JifhFpF)kkk25SIpIJ$-a literal 0 HcmV?d00001 diff --git a/images/menu/menu-newlicense-on.gif b/images/menu/menu-newlicense-on.gif index a9b7ac93a740ad3bc6eb483f15361a8bbe8a875d..f6203f9e9ecb2cd2c66cf7f4a698a1196a75db8a 100644 GIT binary patch literal 990 zcmZ?wbhEHbEMw4Mc*el6aNm`nsk=%R9-6%M+^Y{?zkdIJt`C8{U5T@$cXNhi|_ey!GPwhi{f0Tl}Z)J#zcyvAeJS{QdXl^N%af z-oN_v{nFES_g;UFnS1EclXrJtfByULpMCfCUw{6F%-DbN@!JcJ-$u_pc=z?Evk%`~ zdHP^|i#r!AS-xV9ZHkPiFRJXkqeZn!$3dm7Vj%B{_XTSwm-8K~J5wE3DkjH*QV8b74!r zg15JetGvK3i(9&y4GMAFa__$JtX`1MBqaHNT7-bdT1MeYA2yK->Aa1Njx6l59w(N} zGcVv4dGY(ikp?@aTPsvAlqXC$t!j|FZ_f8ufo+1)K>;5G65TmCnP$o;JaCX}&Jv$) zlHt&B@-mZ;j80;}36+KUUNe~{ScOS9lpD=7nb37siD^yh|Cw`IuV22{EMrx%=EuXu zPA%M?;vtjM8D1-}aBMMRSg?ShnURa9Qgo(+wkIpABh!LoQ$4pXXJ->Q7K5Hk?uCdfrnFa!PqHvF^zXCvvis}1A;XEKtayo=xK?uQgGt)p0}fBhdZigG9#rgDm_LnMGr_atr^1Ss7^7wOnTgH{<}N0I z71v)VGnid72!aW_5hG!_0k(ldQPGs<*&! ze}}fh%(cSI&DrChthL0?*|@~bPF-Y`qN>Br*sHg}p{=$&lcA}7i<5GIhfZE(!p_)~ zp{lI8!q3~}T4`|DGI<1^Vj3heVl^Z53)!DMD)fiZ_YRwuTD+Pd9U7*0qAclni2u3hK zYhfz|7h3~hh=IYu2(oqC#whz1Yu~alPC(e}USlprlf&mp4 zJ3z1)0cXb&97vW7BLIuVe9 diff --git a/images/menu/menu-newlicense-over.gif b/images/menu/menu-newlicense-over.gif index 9dacb8f5a9127c351b6cb9a3fb8d7edb2a9bc0ef..1600b7424f105dc7c65a24aee4d1e80a54fd6345 100644 GIT binary patch delta 824 zcmV-81IPTe2i^yNM@dFFIbn7HC;;XF0I#pFQkA-jii)G7qwVeO_V)JA&(FHLy4l&; z#l^*LZf@h_<9vL4mzS4bUS9tG{_*kg-rnBb-QDo;@a5&@=;-L@=jZ9^>Cw^A?Ck8$ z&d%7_*zWG`{r&yZ)6;-}fOU0se}8}B;o)j(YQw|BX=!O-XJ=<+Wo3GLdcMBCZ*Onh z+}z8{%gxQr!otFBZEfV_gr@ zQ-Xqm+S=M|Y;1FLbA^S4+uPgv`uhL>|4mIzk@1|80TPpq0S$k404M+e2mgQpMT3Ne zhKGoWii?bmj*pFkkdu^^mY0l@n46rPo|>MaqN9nRq^GEyrm3v0j;pS*vV^d+wyd?c zx}&+fzN){$yu!qty~W6j$H~lw%gxZwlLJHmgaSkYm;}~^2nop29~%`EGZz#U1}}!x z1qy@M+LzqWw2yxjL_|Y1D-ZfE+7T&WAYQg@-Rwz&pf7`oApeM95J;^-5qU)h6wqhQ zz=1&o2O&sUq@Fi$3Kr=5Smb~{0@|o0(1&1Ji=2hm(-8y~ zKz{7Np#p>j4@nhNlXn2?AOi-pG61lk0D}Pw40#oqKr6`w1wjI!#ZO~Y10%q!?S;PPUkG?%hKK)IwXhH;bbEHNWDr0@%k}E&0 zNZN!BF(iMS=)s}D(WHY2Y!q-Ha=XS203dKY+|W16g%+?R#C#A`LM|E4pR};yh#L`2 zL>m#;=pz6&)-X_yRzx^()ghB91wnzhI zF;Y$`OqEvtf@PMwY{}& delta 783 zcmV+q1MvLb2ek)(M@dFFIbmS{69DD_0GXz$>+9=#jFQ92%)-da#>~!UdV*YXde_?9 zg_N3SdxD**uG!q(o2RVd;^U8o?)yu-$jo}-bUq>7lHUvzzdkeANV)U&(3sk66ZcYv0osLj&TY=DPre}+|T zbz*maUUPd{Z+LBih;xRGXncf$l9+molZ2F+QfYFL;j5F40S$j)022TJ2mgRZf`f#G zhKGoWii?bmj*pO$l9QB`mY0~Bnwysa0D}Sql>nlI0Ro(T zuK*850-wIX5WRz>g#ZSE2M+)Mva~LF70=9gX-4>8sTsh3_^v;z6^f&6)vdUKo&J0FMj-1_n*lQL7|_7x00cu}@Ni0#D-RU`RLIymV(5ySXlsA|Sj)C8+W>3-Z;a?b;fIL; zI@&G>0b)T6z6;zgsM|Kcj2|69wC%t`FyX;$P0(n(*RAEtJ~C_GtT}+@3IQTyj!+}B z0v{Rzkbs~-wFb@=L~jm&!3PEj5KP~G?c;Rp%)d|ju;HS&1RSP0E7#nkx%21F13WKK zp!p6D3<`gEXfA<4a|Yg_TaZAVdXE4pnwQ|9{X~xv*$cerVWB$x>L;i(5Yb!&2lf^~ zC!lje6lmaq2qviDf($n3;DZn*2*iXGR%qdc7-p#9h8%Y2;e|njDB_4DmT2OMD5j|5 ziY%5$#EUS-DC3MY)@b96IOeG1j6?M36h}kw^wv#1fKBHtFP(P(~@` NlvGw}<&%K`06S4~dqMyJ diff --git a/images/menu/menu-newlicense.gif b/images/menu/menu-newlicense.gif index ca9701f49107e18d302c7b02a87422e078fded46..f6203f9e9ecb2cd2c66cf7f4a698a1196a75db8a 100644 GIT binary patch delta 861 zcmV-j1ETz{2;K*OM@dFFIbn7HC;;XF0HMCrQkA-Np~923&g$^>_4oR&$Jx{1>c`mS zyU*X>=iqrw?DP24 z=I`qA_tNF=-s|&Rox;-O?%nJ2{r>(xi?{mx{ZyF0(c|rZ(Bth}ox$Df^3CDw)aCCX zdaFf`x!LIPBYUjQ;_OnFzT@xpW1+;X&EK=p;^OY~)#mSJqs6e$;l0=9OOw0o^!P)L zxGjOON07QHf384`x4+rvU!TL`?)CZm{m9@~ z000000001!TLChYU;!Gx zm6n%`l9-#Eot~PWp`xRSprog$oTjO)t&Xd%v9g4)v$m|Yx4NUbyS}Qw!Mwu6oxR1# zi^s{#hRe;+&yxd70E7Zd0+QROf8&Xj45Mf6M2?CiMAmBhAgK8I-G-yD8$mUROv@!sopa6pb3JiG_nLsN^1qDF@pvIL+wWkLL5W-BT07+$!9!NM+!9@=eCu#sL zL~YPmY652JqsasT0FS;sNr13`$ggP!O`g2n3|G zmmuFLz(C}7jT-#Wie7tDNL1C{(@zeyKKqj nEna>(OPFHDLS~t*oQY;CYOZ-on{EyhXEJck`H7v#1Ofm%LbS2d delta 1012 zcmV^Ao1u}MqP)b&TxxMRNKVt*;H|a0qN}iKcYfF0;fj}^U2Ab) zZF5FcT18Y^jF_Oez{ce1?Yzd%tF*d-j+J3;bKvIeu)D*5X?A^2US&j6TG80vw7cGd!zs1QoM^1T#i*|#G$kN+|kd}s#mxGU%n4zV0f{D7t z&c4Xd#n9Tz)ZCz{ucooNQD0`Vyv5q$>1cL+Yj}Q_prpad(ah4-oTsgHfrxm7ip0#) zuDQZ)dVhdTjg+FUw^3kb%Fxv3>+YDOtf;fOYGI?2^z`@o z_WAqX=<)vk{@LX3`~3af=JD6#?)m%t*yHcoLo-W~{BQuduPQv$VCg zx3FKjyS%#tI=e9~y~M@4I>WpJF~-f#&&^)a)6~-g14+^{EY;oK(?{IYGF0E@=ji5J z>+J3915YFC5c2Z|6@Ob02KMVy`0NJi0lcv8Lj?l{K5Y4bkYK(F7Z9?Gn2_B;2<|er z6Tq>f$BqL?G*}=2fd-B^Xqa4pAfx~d0}u$HL9*k5lOAIVn6Lo{0typ&QUKC`gn$Jb zt{`whazXs~ojx-O6?A04*UJr0~E%3yc9Nw10SLpk+V^7!CgzJkY`+ z?bZinxeoB4h;VLV$N2K(oA(gnp8NCr__^rc&wu}b z{T&PtfqoGzpo?1Ab$gtz(olX*l-|*5ORT_g!+MqAQw;+;h_Xo z9N6EA`vKtMi!i=80E`6`;35_)98katF3xa(iwFD|BYy@n)L0_`132O0iwh_0=mP*R z=vY7$0AOHal{WfN;{iOl$ioRuVi4n)FOp&AnP{e|=9+A_>E@eo#;GP6bk=F-op|P{ z=bn7_>F1w#iXrHrgcfS(p@=4`=%S1^YUmk|Mk?u~lvZl#rI==_>86yH;pwNKhAQf) iq?T&xsTruIDk>PPw(9Duu*NFuthCl@>#eW`0suQuRv8rl diff --git a/images/menu/menu-newresource-on.gif b/images/menu/menu-newresource-on.gif new file mode 100644 index 0000000000000000000000000000000000000000..261edbcdf737a5425347923591c3a1d53633174f GIT binary patch literal 646 zcmZ?wbhEHbtY^?*IKsfNaNm`nsk>f%_*$~?(B!S>zJC9eG=0zU8&B`QcyH0P;qrr5 zyU*WWcl@S*@3xlJC;tEcFI~2hffS(llLf3?2SkGGWMKWDz|fnLIWJ??x}4YhK4=~* z$-V!>`gzU!|4U^HJaksI99#0KJ;rMOMzs>JsiEs5CYhY}&D)*uz})9t@9B(NmS^+U z-Y&Re?I(ZMosB`!wSvKenV;E$iNCFly;QASpq8tKpOsg+vDuu7yP>Wt%CK(&Yp1}} zmYFK-{c{9*=4;f}@-1%aWo@fx=TTm$%vG;4Lv@8RPa9J+8%IaQNq%-tfdc{z{Fj)v zGV`9>R!q#qWZ*Wch7uVZ>qfJ6jKj_eb_Q?9{Lmo#3^=v4u%UHekBI3Y)ks ze^<uz4giU@tptvx&2{R5M<)hXlu+A=}2JaS7czY F1^^|s`W*lO literal 0 HcmV?d00001 diff --git a/images/menu/menu-newresource-over.gif b/images/menu/menu-newresource-over.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a87217adf3fe75402be694a601d6f9457012e14 GIT binary patch literal 646 zcmZ?wbhEHbtY^?*IKsfNe*OBOsk`33ecRR5wRrL3Z{NP1KYzZarsnbE$8m9SH*elN zdi3b7UAyw~@}^Ip{{R1fUteDaQh?%57O-+15DBuAf%Sg^LvKpvyo^=ra$fKIpn0q$ z_x=y-=QZ#DFO@Cu&{@@TY{{qg7_0dk)k?gkhOUp8WOCX!Z+F52bDwj)r!#I@p3Pf( zyWonopZr;Ob_PY)3I-2mer5|M{DnV(;wB%?y)76lOeEcWiWL zZ*ZNh_SR9S?_{1L{nfjQ0VdH!+o>#pF4|wDmSXlY~3rMWUzhlO-NI`@l zVZni>bO9Ng8CMJrI%P4q-}!9Hq}Dl8JaLOv;kv~6jNHd;jT|O3hQ_Ehs5&Sp$ZsiR zkaDSQNMLX-wyqD8epq;3e}iYdj_E~_Tc&I}-fMIW0v%7SSyr>Exgp^;XG%?Z-;8Mv zjhac>Z*!FbZ?LUqUpXUav5Ve?`7QPDY&{&_AKB-yQ^QVlg4Y7a7A7IdfawA&Y~r^3 zT`})zQ=r`TS>7(PE(^jo2kUT4{7cQ6;hfiQXY4$IUvg3UwcJ~36MZF1q925G#+&T> zqxJc*T0Kbd$;~TzkjM-t;VJ5_J>_Tkcm&Dtua%iBY~M;k%7S) E0Aq^xmH+?% literal 0 HcmV?d00001 diff --git a/images/menu/menu-newresource.gif b/images/menu/menu-newresource.gif new file mode 100644 index 0000000000000000000000000000000000000000..261edbcdf737a5425347923591c3a1d53633174f GIT binary patch literal 646 zcmZ?wbhEHbtY^?*IKsfNaNm`nsk>f%_*$~?(B!S>zJC9eG=0zU8&B`QcyH0P;qrr5 zyU*WWcl@S*@3xlJC;tEcFI~2hffS(llLf3?2SkGGWMKWDz|fnLIWJ??x}4YhK4=~* z$-V!>`gzU!|4U^HJaksI99#0KJ;rMOMzs>JsiEs5CYhY}&D)*uz})9t@9B(NmS^+U z-Y&Re?I(ZMosB`!wSvKenV;E$iNCFly;QASpq8tKpOsg+vDuu7yP>Wt%CK(&Yp1}} zmYFK-{c{9*=4;f}@-1%aWo@fx=TTm$%vG;4Lv@8RPa9J+8%IaQNq%-tfdc{z{Fj)v zGV`9>R!q#qWZ*Wch7uVZ>qfJ6jKj_eb_Q?9{Lmo#3^=v4u%UHekBI3Y)ks ze^<uz4giU@tptvx&2{R5M<)hXlu+A=}2JaS7czY F1^^|s`W*lO literal 0 HcmV?d00001 diff --git a/index.php b/index.php index 34cc94c..dee7f12 100644 --- a/index.php +++ b/index.php @@ -28,9 +28,9 @@ //check what referring script is if (isset($_SESSION['ref_script']) && ($_SESSION['ref_script'] != "license.php")){ - $reset='Y'; + $reset='Y'; }else{ - $reset='N'; + $reset='N'; } $_SESSION['ref_script']=$currentPage; @@ -235,7 +235,7 @@ -  new search +  new search diff --git a/js/forms/licenseForm.js b/js/forms/licenseForm.js index 5ce0c9f..296817d 100644 --- a/js/forms/licenseForm.js +++ b/js/forms/licenseForm.js @@ -81,6 +81,7 @@ $(function(){ $("#organizationName").autocomplete('ajax_processing.php?action=getOrganizations', { minChars: 2, max: 50, + autoFill: true, mustMatch: false, width: 233, delay: 20, diff --git a/js/forms/signatureForm.js b/js/forms/signatureForm.js index ab120eb..dff2da0 100644 --- a/js/forms/signatureForm.js +++ b/js/forms/signatureForm.js @@ -23,6 +23,7 @@ $(function(){ $("#signerName").autocomplete('ajax_processing.php?action=getSigners', { minChars: 2, max: 20, + autoFill: false, mustMatch: false, width: 120, delay: 200, diff --git a/license.php b/license.php index 9568bba..1d4a58d 100644 --- a/license.php +++ b/license.php @@ -56,13 +56,13 @@

- +
- +
- + @@ -80,13 +80,13 @@
@@ -1007,7 +1007,7 @@ - + @@ -1115,7 +1115,7 @@ - + @@ -1169,7 +1169,7 @@ - + diff --git a/ajax_htmldata.php b/ajax_htmldata.php index c048451..03ea5b2 100644 --- a/ajax_htmldata.php +++ b/ajax_htmldata.php @@ -334,7 +334,7 @@ if ($pageStart == "1"){ $pagination .= " "; }else{ - $pagination .= " "; + $pagination .= " "; } $page = floor($pageStart/$numberOfRecords) + 1; //now determine the starting page - we will display 3 prior to the currently selected page @@ -361,14 +361,14 @@ if ($pageStart == $nextPageStarts){ $pagination .= "" . $i . " "; }else{ - $pagination .= "" . $i . " "; + $pagination .= "" . $i . " "; } } if ($pageStart == $nextPageStarts){ $pagination .= " "; }else{ - $pagination .= " "; + $pagination .= " "; } echo $pagination; echo "
"; diff --git a/ajax_processing.php b/ajax_processing.php index 030349d..878689f 100644 --- a/ajax_processing.php +++ b/ajax_processing.php @@ -32,11 +32,11 @@ //for document adds or updates - note that actual file is done on form (processing done in uploadDocument) //this just saves the URL in db - case 'submitDocument': + case 'submitDocument': - //if documentID is sent then this is an update - if ((isset($_POST['documentID'])) && ($_POST['documentID'] != '')){ - $document = new Document(new NamedArguments(array('primaryKey' => $_POST['documentID']))); + //if documentID is sent then this is an update + if ((isset($_POST['documentID'])) && ($_POST['documentID'] != '')){ + $document = new Document(new NamedArguments(array('primaryKey' => $_POST['documentID']))); if ((($document->expirationDate == "") || ($document->expirationDate == '0000-00-00')) && ($_POST['archiveInd'] == "1")){ $document->expirationDate = date( 'Y-m-d H:i:s' ); @@ -45,9 +45,9 @@ } - }else{ - $document = new Document(); - $document->documentID = ''; + }else{ + $document = new Document(); + $document->documentID = ''; if ($_POST['archiveInd'] == "1"){ $document->expirationDate = date( 'Y-m-d H:i:s' ); @@ -78,11 +78,11 @@ echo $e->POSTMessage(); } - break; + break; - case 'deleteLicense': + case 'deleteLicense': //note: does not delete physical documents @@ -102,7 +102,7 @@ //archives (expires) document - defaults to current date/time - case 'archiveDocument': + case 'archiveDocument': $document = new Document(new NamedArguments(array('primaryKey' => $_GET['documentID']))); $document->expirationDate = date( 'Y-m-d H:i:s' ); @@ -112,20 +112,20 @@ echo $e->getMessage(); } - break; + break; //verify that the new document name doesn't have bad characters and the name isn't already being used - case 'checkUploadDocument': + case 'checkUploadDocument': $uploadDocument = $_POST['uploadDocument']; $document = new Document(); $exists = 0; - if (!is_writable("documents")) { - echo 3; - break; - } + if (!is_writable("documents")) { + echo 3; + break; + } //first check that it doesn't have any offending characters if ((strpos($uploadDocument,"'") > 0) || (strpos($uploadDocument,'"') > 0) || (strpos($uploadDocument,"&") > 0) || (strpos($uploadDocument,"<") > 0) || (strpos($uploadDocument,">") > 0)){ @@ -145,7 +145,7 @@ //performs document upload - case 'uploadDocument': + case 'uploadDocument': $documentName = basename($_FILES['myfile']['name']); $document = new Document(); @@ -180,7 +180,7 @@ break; - case 'deleteDocument': + case 'deleteDocument': //note - does not delete physical document @@ -209,21 +209,21 @@ - case 'submitSignature': - //set date for proper saving - if ((isset($_POST['signatureDate'])) && ($_POST['signatureDate'] != '')){ + case 'submitSignature': + //set date for proper saving + if ((isset($_POST['signatureDate'])) && ($_POST['signatureDate'] != '')){ $signatureDate = date("Y-m-d", strtotime($_POST['signatureDate'])); }else{ $signatureDate = ""; } - //if signatureID is sent then this is an update - if ((isset($_POST['signatureID'])) && ($_POST['signatureID'] != '')){ - $signature = new Signature(new NamedArguments(array('primaryKey' => $_POST['signatureID']))); - }else{ - $signature = new Signature(); - $signature->signatureID = ''; - } + //if signatureID is sent then this is an update + if ((isset($_POST['signatureID'])) && ($_POST['signatureID'] != '')){ + $signature = new Signature(new NamedArguments(array('primaryKey' => $_POST['signatureID']))); + }else{ + $signature = new Signature(); + $signature->signatureID = ''; + } $signature->signerName = $_POST['signerName']; @@ -241,7 +241,7 @@ break; - case 'deleteSignature': + case 'deleteSignature': $signature = new Signature(new NamedArguments(array('primaryKey' => $_GET['signatureID']))); @@ -256,15 +256,15 @@ //add/update expression - case 'submitExpression': - - //if expressionID is sent then this is an update - if ((isset($_POST['expressionID'])) && ($_POST['expressionID'] != '')){ - $expressionID = $_POST['expressionID']; - $expression = new Expression(new NamedArguments(array('primaryKey' => $expressionID))); - }else{ - $expression = new Expression(); - //default production use (terms tool indicator) to off if this is an add, otherwise we leave it alone + case 'submitExpression': + + //if expressionID is sent then this is an update + if ((isset($_POST['expressionID'])) && ($_POST['expressionID'] != '')){ + $expressionID = $_POST['expressionID']; + $expression = new Expression(new NamedArguments(array('primaryKey' => $expressionID))); + }else{ + $expression = new Expression(); + //default production use (terms tool indicator) to off if this is an add, otherwise we leave it alone $expression->productionUseInd = 0; $expression->expressionID = ''; } @@ -300,10 +300,10 @@ echo $e->getMessage(); } - break; + break; - case 'deleteExpression': + case 'deleteExpression': $expression = new Expression(new NamedArguments(array('primaryKey' => $_GET['expressionID']))); @@ -317,7 +317,7 @@ break; - case 'setProdUse': + case 'setProdUse': $expressionID = $_GET['expressionID']; $licenseID = $_GET['licenseID']; @@ -362,11 +362,11 @@ break; - case 'submitExpressionNote': + case 'submitExpressionNote': //if note id is sent in, this is an update - if ((isset($_POST['expressionNoteID'])) && ($_POST['expressionNoteID'] != '')){ - $expressionNote = new ExpressionNote(new NamedArguments(array('primaryKey' => $_POST['expressionNoteID']))); + if ((isset($_POST['expressionNoteID'])) && ($_POST['expressionNoteID'] != '')){ + $expressionNote = new ExpressionNote(new NamedArguments(array('primaryKey' => $_POST['expressionNoteID']))); $expressionNote->note = $_POST['expressionNote']; $expressionNote->displayOrderSeqNumber = $_POST['displayOrderSeqNumber']; @@ -380,8 +380,8 @@ //adding new $expression = new Expression(new NamedArguments(array('primaryKey' => $_POST['expressionID']))); - $expressionNote = new ExpressionNote(); - $expressionNote->expressionNoteID = ''; + $expressionNote = new ExpressionNote(); + $expressionNote->expressionNoteID = ''; $expressionNote->note = $_POST['expressionNote']; $expressionNote->expressionID = $_POST['expressionID']; $expressionNote->displayOrderSeqNumber = $expression->getNextExpressionNoteSequence; @@ -394,19 +394,19 @@ } } - break; + break; //when the arrows for reordering are clicked - case 'reorderExpressionNote': + case 'reorderExpressionNote': $expressionNote = new ExpressionNote(new NamedArguments(array('primaryKey' => $_GET['expressionNoteID']))); echo $expressionNote->reorder($_GET['direction'], $_GET['oldSeq']); - break; + break; - case 'deleteExpressionNote': + case 'deleteExpressionNote': $expressionNote = new ExpressionNote(new NamedArguments(array('primaryKey' => $_GET['expressionNoteID']))); @@ -417,19 +417,19 @@ echo $e->getMessage(); } - break; + break; - case 'submitSFXProvider': + case 'submitSFXProvider': - //if expressionID is sent then this is an update - if ((isset($_POST['providerID'])) && ($_POST['providerID'] != '')){ - $sfxProvider = new SFXProvider(new NamedArguments(array('primaryKey' => $_POST['providerID']))); + //if expressionID is sent then this is an update + if ((isset($_POST['providerID'])) && ($_POST['providerID'] != '')){ + $sfxProvider = new SFXProvider(new NamedArguments(array('primaryKey' => $_POST['providerID']))); $sfxProvider->shortName = $_POST['shortName']; $sfxProvider->documentID = $_POST['documentID']; - }else{ - $sfxProvider = new SFXProvider(); - $sfxProvider->sfxProviderID = ''; + }else{ + $sfxProvider = new SFXProvider(); + $sfxProvider->sfxProviderID = ''; $sfxProvider->shortName = $_POST['shortName']; $sfxProvider->documentID = $_POST['documentID']; } @@ -440,10 +440,10 @@ echo $e->getMessage(); } - break; + break; - case 'deleteSFXProvider': + case 'deleteSFXProvider': $sfxProvider = new SFXProvider(new NamedArguments(array('primaryKey' => $_GET['sfxProviderID']))); @@ -453,14 +453,14 @@ } catch (Exception $e) { echo $e->getMessage(); } - break; + break; - case 'submitLicense': + case 'submitLicense': - //may have been sent through despite missing license name or provider- do check here to make sure that isn't the case before insert into DB - if ((isset($_POST['shortName'])) && (isset($_POST['organizationName'])) && ($_POST['shortName'] != '') && ($_POST['organizationName'] != '')) { + //may have been sent through despite missing license name or provider- do check here to make sure that isn't the case before insert into DB + if ((isset($_POST['shortName'])) && (isset($_POST['organizationName'])) && ($_POST['shortName'] != '') && ($_POST['organizationName'] != '')) { //if licenseID is sent then this is an update if ($_POST['licenseID'] <> ""){ //update data @@ -534,11 +534,11 @@ "; - break; + break; - case 'addProvider': + case 'addProvider': if ((isset($_GET['shortName'])) && ($_GET['shortName'] != '')){ $provider = new Provider(); $provider->providerID=''; @@ -601,10 +601,10 @@ echo ""; - break; + break; //new doc type being added directly on document form - returns updated drop down list - case 'addDocumentType': + case 'addDocumentType': if ((isset($_POST['shortName'])) && ($_POST['shortName'] != '')){ $documentType = new DocumentType(); @@ -635,13 +635,13 @@ echo ""; - break; + break; //new signature type being added directly on signature form - returns updated drop down list //no longer used.... must add signature types from admin form - case 'addSignatureType': + case 'addSignatureType': if ((isset($_POST['shortName'])) && ($_POST['shortName'] != '')){ $signatureType = new SignatureType(); @@ -673,12 +673,12 @@ echo ""; - break; + break; //new expression type being added directly on expression form - returns updated drop down list //note default type is 'internal'. this will need to be updated by user in admin if it's decided to be used for display - case 'addExpressionType': + case 'addExpressionType': if ((isset($_POST['shortName'])) && ($_POST['shortName'] != '')){ @@ -712,15 +712,15 @@ echo ""; - break; + break; //generically adds data for admin screen //error is echoed back - case 'addData': + case 'addData': - $className = $_POST['tableName']; - $shortName = $_POST['shortName']; + $className = $_POST['tableName']; + $shortName = $_POST['shortName']; $instance = new $className(); $instance->shortName = $shortName; @@ -733,14 +733,14 @@ } echo ""; - break; + break; //generically updates data for admin screen //error is echoed back - case 'updateData': - $className = $_POST['tableName']; - $updateID = $_POST['updateID']; - $shortName = $_POST['shortName']; + case 'updateData': + $className = $_POST['tableName']; + $updateID = $_POST['updateID']; + $shortName = $_POST['shortName']; $instance = new $className(new NamedArguments(array('primaryKey' => $updateID))); $instance->shortName = $shortName; @@ -751,15 +751,15 @@ echo $e->POSTMessage(); } - break; + break; //generically deletes data for admin screen //error is echoed back - case 'deleteData': + case 'deleteData': - $className = $_GET['tableName']; - $deleteID = $_GET['deleteID']; + $className = $_GET['tableName']; + $deleteID = $_GET['deleteID']; //since we're using MyISAM which doesn't support FKs, must verify that there are no records of children or they could disappear $instance = new $className(new NamedArguments(array('primaryKey' => $deleteID))); @@ -780,16 +780,16 @@ } echo ""; - break; + break; - case 'submitExpressionType': + case 'submitExpressionType': if ((isset($_POST['expressionTypeID'])) && ($_POST['expressionTypeID'] != '')){ - $expressionType = new ExpressionType(new NamedArguments(array('primaryKey' => $_POST['expressionTypeID']))); + $expressionType = new ExpressionType(new NamedArguments(array('primaryKey' => $_POST['expressionTypeID']))); }else{ - $expressionType = new ExpressionType(); - $expressionType->expressionTypeID = ''; + $expressionType = new ExpressionType(); + $expressionType->expressionTypeID = ''; } $expressionType->shortName = $_POST['shortName']; @@ -801,15 +801,15 @@ echo $e->POSTMessage(); } - break; + break; - case 'submitCalendarSettings': + case 'submitCalendarSettings': if ((isset($_POST['calendarSettingsID'])) && ($_POST['calendarSettingsID'] != '')){ - $calendarSettings = new CalendarSettings(new NamedArguments(array('primaryKey' => $_POST['calendarSettingsID']))); + $calendarSettings = new CalendarSettings(new NamedArguments(array('primaryKey' => $_POST['calendarSettingsID']))); }else{ - $calendarSettings = new CalendarSettings(); - $calendarSettings->calendarSettingsID = ''; + $calendarSettings = new CalendarSettings(); + $calendarSettings->calendarSettingsID = ''; } if (is_array($_POST['value'])) { @@ -824,14 +824,14 @@ echo $e->POSTMessage(); } - break; + break; - case 'submitQualifier': + case 'submitQualifier': if ((isset($_POST['qualifierID'])) && ($_POST['qualifierID'] != '')){ - $qualifier = new Qualifier(new NamedArguments(array('primaryKey' => $_POST['qualifierID']))); + $qualifier = new Qualifier(new NamedArguments(array('primaryKey' => $_POST['qualifierID']))); }else{ - $qualifier = new Qualifier(); - $qualifier->qualifierID = ''; + $qualifier = new Qualifier(); + $qualifier->qualifierID = ''; } $qualifier->expressionTypeID = $_POST['expressionTypeID']; @@ -843,13 +843,13 @@ echo $e->POSTMessage(); } - break; + break; - case 'submitUserData': + case 'submitUserData': if ($_POST['orgLoginID']){ - $user = new User(new NamedArguments(array('primaryKey' => $_POST['orgLoginID']))); + $user = new User(new NamedArguments(array('primaryKey' => $_POST['orgLoginID']))); }else{ - $user = new User(); + $user = new User(); } $user->loginID = $_POST['loginID']; @@ -865,13 +865,13 @@ } - break; + break; - case 'deleteUser': + case 'deleteUser': - $loginID = $_GET['loginID']; + $loginID = $_GET['loginID']; $user = new User(new NamedArguments(array('primaryKey' => $loginID))); @@ -883,14 +883,14 @@ } echo ""; - break; + break; - case 'deleteExpressionType': + case 'deleteExpressionType': - $expressionTypeID = $_GET['expressionTypeID']; + $expressionTypeID = $_GET['expressionTypeID']; $expressionType = new ExpressionType(new NamedArguments(array('primaryKey' => $expressionTypeID))); @@ -902,22 +902,22 @@ } echo ""; - break; + break; //verify file name for uploaded attachments (4th tab) aren't already being used - case 'checkUploadAttachment': + case 'checkUploadAttachment': $uploadAttachment = $_POST['uploadAttachment']; $attachmentFile = new AttachmentFile(); $exists = 0; - if (!is_writable("attachments")) { - echo 3; - break; - } + if (!is_writable("attachments")) { + echo 3; + break; + } foreach ($attachmentFile->allAsArray() as $attachmentTestArray) { if (strtoupper($attachmentTestArray['attachmentURL']) == strtoupper($uploadAttachment)) { @@ -930,7 +930,7 @@ break; //perform actual upload for attachments (4th tab) - case 'uploadAttachment': + case 'uploadAttachment': $documentName = basename($_FILES['myfile']['name']); @@ -965,21 +965,21 @@ break; //add/update for attachment - 4th tab - case 'submitAttachment': + case 'submitAttachment': - //if attachmentID is sent then this is an update - if ((isset($_POST['attachmentID'])) && ($_POST['attachmentID'] <> "")){ - $attachment = new Attachment(new NamedArguments(array('primaryKey' => $_POST['attachmentID']))); - }else{ - $attachment = new Attachment(); - $attachment->attachmentID = ''; + //if attachmentID is sent then this is an update + if ((isset($_POST['attachmentID'])) && ($_POST['attachmentID'] <> "")){ + $attachment = new Attachment(new NamedArguments(array('primaryKey' => $_POST['attachmentID']))); + }else{ + $attachment = new Attachment(); + $attachment->attachmentID = ''; } - if ((isset($_POST['sentDate'])) && ($_POST['sentDate'] <> "")){ - $attachment->sentDate = date("Y-m-d", strtotime($_POST['sentDate'])); - }else{ - $attachment->sentDate = ""; - } + if ((isset($_POST['sentDate'])) && ($_POST['sentDate'] <> "")){ + $attachment->sentDate = date("Y-m-d", strtotime($_POST['sentDate'])); + }else{ + $attachment->sentDate = ""; + } $attachment->attachmentText = $_POST['attachmentText']; $attachment->licenseID = $_POST['licenseID']; @@ -993,11 +993,11 @@ } - break; + break; //adding the attachment file to the db - saves the URL to it only - case 'addAttachmentFile': + case 'addAttachmentFile': $attachmentFile = new AttachmentFile(); $attachmentFile->attachmentID = $_GET['attachmentID']; @@ -1010,12 +1010,12 @@ echo $e->getMessage(); } - break; + break; - case 'deleteAttachment': + case 'deleteAttachment': - $attachment = new Attachment(new NamedArguments(array('primaryKey' => $_GET['attachmentID']))); + $attachment = new Attachment(new NamedArguments(array('primaryKey' => $_GET['attachmentID']))); //first delete attachments foreach ($attachment->getAttachmentFiles() as $attachmentFile) { @@ -1029,12 +1029,12 @@ echo $e->getMessage(); } - break; + break; - case 'deleteAttachmentFile': + case 'deleteAttachmentFile': - $attachmentFile = new AttachmentFile(new NamedArguments(array('primaryKey' => $_GET['attachmentFileID']))); + $attachmentFile = new AttachmentFile(new NamedArguments(array('primaryKey' => $_GET['attachmentFileID']))); try { $attachmentFile->delete(); @@ -1043,17 +1043,17 @@ echo $e->getMessage(); } - break; + break; //updates license status when a new one is selected in dropdown box - case 'updateStatus': + case 'updateStatus': $licenseID = $_GET['licenseID']; $statusID = $_GET['statusID']; - $statusDate = date( 'Y-m-d H:i:s' ); + $statusDate = date( 'Y-m-d H:i:s' ); - //update license - $license = new License(new NamedArguments(array('primaryKey' => $_GET['licenseID']))); + //update license + $license = new License(new NamedArguments(array('primaryKey' => $_GET['licenseID']))); $license->statusID = $statusID; $license->statusDate = $statusDate; @@ -1064,11 +1064,11 @@ echo $e->getMessage(); } - break; + break; //used for autocomplete of signer name - case 'getSigners': + case 'getSigners': if (isset($_GET['searchMode'])) $searchMode = $_GET['searchMode']; else $searchMode=''; if (isset($_GET['limit'])) $limit = $_GET['limit']; else $limit = ''; @@ -1088,7 +1088,7 @@ //used for autocomplete of provider names (from organizations module) - case 'getOrganizations': + case 'getOrganizations': if (isset($_GET['searchMode'])) $searchMode = $_GET['searchMode']; else $searchMode=''; if (isset($_GET['limit'])) $limit = $_GET['limit']; else $limit = ''; @@ -1169,12 +1169,12 @@ break; default: - echo "Action " . $action . " not set up!"; - break; + echo "Action " . $action . " not set up!"; + break; } -?> \ No newline at end of file +?> diff --git a/css/style.css b/css/style.css index 70fa186..e513013 100644 --- a/css/style.css +++ b/css/style.css @@ -47,20 +47,23 @@ table:nth-of-type(1) td { } .footer { - height: 3em; - font-size:80%; - color:red; - text-align:center; - width:900px; - font-style: italic; + height: 3em; + font-size: 80%; + text-align: center; + /*-*/width: 100%; + font-style: italic; + text-align: center; } - a {color:#3D545D;font-size:9pt;} a:active {color:#94a9be;} a:focus {color:#94a9be;outline: none;} -a.smallLink {font-size:95%; } +a.smallLink { + font-size: 12px; + text-decoration: none; + color: #1B76A9; +} span.smallText{font-size:90%;} span.redText{color:red;} @@ -1212,8 +1215,7 @@ table.thickboxTable .headerText { padding: 5px 10px; text-transform: capitalize; margin-left: 5px; - position: relative; - left: -208px; + float: left; } #div_expressionForm input[value=cancel]:hover { @@ -1284,8 +1286,7 @@ table.thickboxTable .headerText { padding: 5px 10px; text-transform: capitalize; margin-left: 5px; - position: relative; - left: -170px; + float: left; } #div_attachmentForm input[value=cancel]:hover { @@ -1321,8 +1322,7 @@ table.thickboxTable .headerText { padding: 5px 10px; text-transform: capitalize; margin-left: 5px; - position: relative; - left: -128px; + float: left; } #div_updateForm input[value=cancel]:hover { @@ -1358,8 +1358,7 @@ table.thickboxTable .headerText { padding: 5px 10px; text-transform: capitalize; margin-left: 5px; - position: relative; - left: -158px; + float: left; } #div_updateForm input#update-qualifier-cancel:hover { @@ -1423,6 +1422,8 @@ table.thickboxTable .headerText { cursor: pointer; } +/*--- Close Buttons in All Forms ---*/ + #div_updateForm a#closeButton { color: #FFFFFF; font-family: "Arial", sans-serif; @@ -1441,3 +1442,62 @@ table.thickboxTable .headerText { #div_updateForm a#closeButton:hover { cursor: pointer; } + +#div_signatureForm a#closeButton { + color: #FFFFFF; + font-family: "Arial", sans-serif; + font-size: 11px; + font-weight: normal; + background: #1b76a9; + border: none; + padding: 5px 10px; + text-transform: capitalize; + text-decoration: none; + position: relative; + top: -5px; + left: 2px; +} + +#div_signatureForm a#closeButton:hover { + cursor: pointer; +} + +#div_expressionNotesForm a#closeButton { + color: #FFFFFF; + font-family: "Arial", sans-serif; + font-size: 11px; + font-weight: normal; + background: #1b76a9; + border: none; + padding: 5px 10px; + text-transform: capitalize; + text-decoration: none; + position: relative; + top: -5px; + left: 2px; +} + +#div_expressionNotesForm a#closeButton:hover { + cursor: pointer; +} + +/*--- Capitalize Add Links ---*/ + +a#commitUpdate { + text-transform: capitalize; +} + +/*--- Shorten Width of Select Dropdown for Signatures and Edit ---*/ + +select#signatureTypeID { + width: 200px; +} + +select#expressionTypeID { + width: 200px; +} + +/*--- IE10 and IE11 Only ---*/ +@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { + { property:value; } +} diff --git a/css/thickbox.css b/css/thickbox.css index daa8b0a..377ad89 100644 --- a/css/thickbox.css +++ b/css/thickbox.css @@ -47,12 +47,12 @@ } * html #TB_overlay { /* ie6 hack */ - position: absolute; - height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'); + position: absolute; + height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'); } #TB_window { - position: fixed; + /*-*/position: absolute; background: #ffffff; z-index: 102; color:#000000; @@ -159,8 +159,8 @@ margin-top: expression(0 - parseInt(this.offsetHeight / 2) + (TBWindowMargin = d } * html #TB_HideSelect { /* ie6 hack */ - position: absolute; - height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'); + position: absolute; + height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'); } #TB_iframeContent{ diff --git a/js/license.js b/js/license.js index fa7486f..9a73f20 100644 --- a/js/license.js +++ b/js/license.js @@ -24,7 +24,7 @@ $(document).ready(function(){ updateExpressions(); updateSFXProviders(); updateAttachmentsNumber(); - updateAttachments(); + updateAttachments(); $('#div_displayDocuments').show(); @@ -37,222 +37,222 @@ $(document).ready(function(){ - viewAll=0; - displayArchiveInd=2; - showParentDocumentID=''; - showExpressionDocumentID=''; - var parentOrderBy = "DT.shortName asc, D.effectiveDate desc, max(signatureDate) desc, D.shortName asc"; - var childOrderBy = "parentDocumentID, expirationDate, DT.shortName asc, D.effectiveDate desc, max(signatureDate) desc, D.shortName asc"; - var parentArchivedOrderBy = "expirationDate, DT.shortName asc, D.effectiveDate desc, max(signatureDate) desc, D.shortName asc"; - var childArchivedOrderBy = "parentDocumentID, expirationDate, expirationDate, DT.shortName asc, D.effectiveDate desc, max(signatureDate) desc, D.shortName asc"; + viewAll=0; + displayArchiveInd=2; + showParentDocumentID=''; + showExpressionDocumentID=''; + var parentOrderBy = "DT.shortName asc, D.effectiveDate desc, max(signatureDate) desc, D.shortName asc"; + var childOrderBy = "parentDocumentID, expirationDate, DT.shortName asc, D.effectiveDate desc, max(signatureDate) desc, D.shortName asc"; + var parentArchivedOrderBy = "expirationDate, DT.shortName asc, D.effectiveDate desc, max(signatureDate) desc, D.shortName asc"; + var childArchivedOrderBy = "parentDocumentID, expirationDate, expirationDate, DT.shortName asc, D.effectiveDate desc, max(signatureDate) desc, D.shortName asc"; - $(".showDocuments").click(function () { - if (viewAll == "0"){ + $(".showDocuments").click(function () { + if (viewAll == "0"){ $('#div_displayDocuments').show(); $('#div_displayExpressions').hide(); $('#div_displaySFXProviders').hide(); $('#div_displayAttachments').hide(); } return false; - }); - - - - $(".showExpressions").click(function () { - updateExpressions(''); - - if (viewAll == "0"){ - $('#div_displayDocuments').hide(); - $('#div_displayExpressions').show(); - $('#div_displaySFXProviders').hide(); - $('#div_displayAttachments').hide(); - } - - return false; - }); - - - - $(".showSFXProviders").click(function () { - if (viewAll == "0"){ - $('#div_displayDocuments').hide(); - $('#div_displayExpressions').hide(); - $('#div_displaySFXProviders').show(); - $('#div_displayAttachments').hide(); - } - return false; - }); - - - - $(".showAttachments").click(function () { - if (viewAll == "0"){ + }); + + + + $(".showExpressions").click(function () { + updateExpressions(''); + + if (viewAll == "0"){ + $('#div_displayDocuments').hide(); + $('#div_displayExpressions').show(); + $('#div_displaySFXProviders').hide(); + $('#div_displayAttachments').hide(); + } + + return false; + }); + + + + $(".showSFXProviders").click(function () { + if (viewAll == "0"){ + $('#div_displayDocuments').hide(); + $('#div_displayExpressions').hide(); + $('#div_displaySFXProviders').show(); + $('#div_displayAttachments').hide(); + } + return false; + }); + + + + $(".showAttachments").click(function () { + if (viewAll == "0"){ $('#div_displayDocuments').hide(); $('#div_displayExpressions').hide(); $('#div_displaySFXProviders').hide(); $('#div_displayAttachments').show(); } return false; - }); + }); - function deleteLicense(licenseID){ - if (confirm("Do you really want to delete this license?") == true) { - $.ajax({ - type: "GET", - url: "ajax_processing.php", - cache: false, - data: "action=deleteLicense&licenseID=" + licenseID, - success: function(html) { - //post return message to index - postwith('index.php',{message:html}); - } + function deleteLicense(licenseID){ + if (confirm("Do you really want to delete this license?") == true) { + $.ajax({ + type: "GET", + url: "ajax_processing.php", + cache: false, + data: "action=deleteLicense&licenseID=" + licenseID, + success: function(html) { + //post return message to index + postwith('index.php',{message:html}); + } - }); + }); - } + } - } + } - function updateLicenseHead(){ + function updateLicenseHead(){ - $.ajax({ - type: "GET", - url: "ajax_htmldata.php", - cache: false, - data: "action=getLicenseHead&licenseID=" + $("#licenseID").val(), - success: function(html) { $('#div_licenseHead').html(html); + $.ajax({ + type: "GET", + url: "ajax_htmldata.php", + cache: false, + data: "action=getLicenseHead&licenseID=" + $("#licenseID").val(), + success: function(html) { $('#div_licenseHead').html(html); tb_reinit(); - } + } - }); + }); - } + } - function updateDocuments(showChildrenDocumentID){ - if (typeof(showChildrenDocumentID) != 'undefined'){ - showParentDocumentID=showChildrenDocumentID; - } - - $.ajax({ - type: "GET", - url: "ajax_htmldata.php", - cache: false, - data: "action=getAllDocuments&licenseID=" + $("#licenseID").val() + "&showChildrenDocumentID=" + showParentDocumentID + "&parentOrderBy=" + parentOrderBy + "&childOrderBy=" + childOrderBy, - success: function(html) { - $('#div_documents').html(html); - tb_reinit(); - } + function updateDocuments(showChildrenDocumentID){ + if (typeof(showChildrenDocumentID) != 'undefined'){ + showParentDocumentID=showChildrenDocumentID; + } + + $.ajax({ + type: "GET", + url: "ajax_htmldata.php", + cache: false, + data: "action=getAllDocuments&licenseID=" + $("#licenseID").val() + "&showChildrenDocumentID=" + showParentDocumentID + "&parentOrderBy=" + parentOrderBy + "&childOrderBy=" + childOrderBy, + success: function(html) { + $('#div_documents').html(html); + tb_reinit(); + } - }); + }); - } + } - function updateArchivedDocuments(showDisplayArchiveInd, showChildrenDocumentID){ + function updateArchivedDocuments(showDisplayArchiveInd, showChildrenDocumentID){ - if ((typeof(showDisplayArchiveInd) != 'undefined') && (showDisplayArchiveInd != '')){ - displayArchiveInd=showDisplayArchiveInd; - } + if ((typeof(showDisplayArchiveInd) != 'undefined') && (showDisplayArchiveInd != '')){ + displayArchiveInd=showDisplayArchiveInd; + } - if (typeof(showChildrenDocumentID) != 'undefined'){ - showParentDocumentID=showChildrenDocumentID; - } - - $.ajax({ - type: "GET", - url: "ajax_htmldata.php", - cache: false, - data: "action=getAllDocuments&licenseID=" + $("#licenseID").val() + "&displayArchiveInd=" + displayArchiveInd + "&showChildrenDocumentID=" + showParentDocumentID + "&parentArchivedOrderBy=" + parentArchivedOrderBy + "&childArchivedOrderBy=" + childArchivedOrderBy, - success: function(html) { $('#div_archives').html(html); - tb_reinit(); - } + if (typeof(showChildrenDocumentID) != 'undefined'){ + showParentDocumentID=showChildrenDocumentID; + } + + $.ajax({ + type: "GET", + url: "ajax_htmldata.php", + cache: false, + data: "action=getAllDocuments&licenseID=" + $("#licenseID").val() + "&displayArchiveInd=" + displayArchiveInd + "&showChildrenDocumentID=" + showParentDocumentID + "&parentArchivedOrderBy=" + parentArchivedOrderBy + "&childArchivedOrderBy=" + childArchivedOrderBy, + success: function(html) { $('#div_archives').html(html); + tb_reinit(); + } - }); + }); - } + } - function showExpressionForDocument(expressionDocumentID){ - if (viewAll == "0"){ - $('#div_displayDocuments').hide(); - $('#div_displayExpressions').show(); - $('#div_displaySFXProviders').hide(); - $('#div_displayAttachments').hide(); - } - - updateExpressions(expressionDocumentID); - } + function showExpressionForDocument(expressionDocumentID){ + if (viewAll == "0"){ + $('#div_displayDocuments').hide(); + $('#div_displayExpressions').show(); + $('#div_displaySFXProviders').hide(); + $('#div_displayAttachments').hide(); + } + + updateExpressions(expressionDocumentID); + } - function updateExpressions(expressionDocumentID){ - if (typeof(expressionDocumentID) != 'undefined'){ - showExpressionDocumentID=expressionDocumentID; - } - + function updateExpressions(expressionDocumentID){ + if (typeof(expressionDocumentID) != 'undefined'){ + showExpressionDocumentID=expressionDocumentID; + } + - $.ajax({ - type: "GET", - url: "ajax_htmldata.php", - cache: false, - data: "action=getAllExpressions&licenseID=" + $("#licenseID").val() + "&documentID=" + showExpressionDocumentID, - success: function(html) { $('#div_expressions').html(html); - tb_reinit(); - } + $.ajax({ + type: "GET", + url: "ajax_htmldata.php", + cache: false, + data: "action=getAllExpressions&licenseID=" + $("#licenseID").val() + "&documentID=" + showExpressionDocumentID, + success: function(html) { $('#div_expressions').html(html); + tb_reinit(); + } - }); + }); - } + } - function updateSFXProviders(){ + function updateSFXProviders(){ - $.ajax({ - type: "GET", - url: "ajax_htmldata.php", - cache: false, - data: "action=getAllSFXProviders&licenseID=" + $("#licenseID").val(), - success: function(html) { $('#div_sfxProviders').html(html); - tb_reinit(); - } + $.ajax({ + type: "GET", + url: "ajax_htmldata.php", + cache: false, + data: "action=getAllSFXProviders&licenseID=" + $("#licenseID").val(), + success: function(html) { $('#div_sfxProviders').html(html); + tb_reinit(); + } - }); + }); - } + } - function updateAttachments(){ + function updateAttachments(){ - $.ajax({ - type: "GET", - url: "ajax_htmldata.php", - cache: false, - data: "action=getAllAttachments&licenseID=" + $("#licenseID").val(), - success: function(html) { $('#div_attachments').html(html); - updateAttachmentsNumber(); - tb_reinit(); - } + $.ajax({ + type: "GET", + url: "ajax_htmldata.php", + cache: false, + data: "action=getAllAttachments&licenseID=" + $("#licenseID").val(), + success: function(html) { $('#div_attachments').html(html); + updateAttachmentsNumber(); + tb_reinit(); + } - }); + }); - } + } function updateAttachmentsNumber(){ - $.ajax({ + $.ajax({ type: "GET", url: "ajax_htmldata.php", cache: false, @@ -264,37 +264,37 @@ function updateAttachmentsNumber(){ $(".span_AttachmentNumber").html("(" + remaining + " records)"); } } - }); + }); } - function updateStatus(){ + function updateStatus(){ - $.ajax({ - type: "GET", - url: "ajax_processing.php", - cache: false, - data: "action=updateStatus&licenseID=" + $("#licenseID").val() + "&statusID=" + $("#statusID").val(), - success: function(html) { - $('#span_updateStatusResponse').html(html); - - // close the span in 3 secs - setTimeout("emptyDiv('span_updateStatusResponse');",3000); - } + $.ajax({ + type: "GET", + url: "ajax_processing.php", + cache: false, + data: "action=updateStatus&licenseID=" + $("#licenseID").val() + "&statusID=" + $("#statusID").val(), + success: function(html) { + $('#span_updateStatusResponse').html(html); + + // close the span in 3 secs + setTimeout("emptyDiv('span_updateStatusResponse');",3000); + } - }); + }); - } + } - function emptyDiv(divName){ + function emptyDiv(divName){ $('#' + divName).html(""); - } + } - function archiveDocument(documentID){ - if (confirm("Do you really want to archive this document?") == true) { + function archiveDocument(documentID){ + if (confirm("Do you really want to archive this document?") == true) { $.ajax({ type: "GET", url: "ajax_processing.php", @@ -306,79 +306,79 @@ function updateAttachmentsNumber(){ updateExpressions(); } }); - } + } - } + } - function deleteDocument(documentID){ - if (confirm("Do you really want to delete this document?") == true) { - $.ajax({ - type: "GET", - url: "ajax_processing.php", - cache: false, - data: "action=deleteDocument&documentID=" + documentID, - success: function(html) { - if (html) alert('There was a problem with deleting the document. You may not delete a document if there are associated expressions. Remove all expressions and try again.'); - updateDocuments(); - updateArchivedDocuments(); - } + function deleteDocument(documentID){ + if (confirm("Do you really want to delete this document?") == true) { + $.ajax({ + type: "GET", + url: "ajax_processing.php", + cache: false, + data: "action=deleteDocument&documentID=" + documentID, + success: function(html) { + if (html) alert('There was a problem with deleting the document. You may not delete a document if there are associated expressions. Remove all expressions and try again.'); + updateDocuments(); + updateArchivedDocuments(); + } - }); + }); - } + } - } + } - function deleteExpression(expressionID){ - if (confirm("Do you really want to delete this expression?") == true) { - $.ajax({ - type: "GET", - url: "ajax_processing.php", - cache: false, - data: "action=deleteExpression&expressionID=" + expressionID, - success: function(html) { updateExpressions(); } - }); + function deleteExpression(expressionID){ + if (confirm("Do you really want to delete this expression?") == true) { + $.ajax({ + type: "GET", + url: "ajax_processing.php", + cache: false, + data: "action=deleteExpression&expressionID=" + expressionID, + success: function(html) { updateExpressions(); } + }); - } + } - } + } - function deleteAttachment(attachmentID){ - if (confirm("Do you really want to delete this attachment? This will also delete all attached files.") == true) { - $.ajax({ - type: "GET", - url: "ajax_processing.php", - cache: false, - data: "action=deleteAttachment&attachmentID=" + attachmentID, - success: function(html) { updateAttachments(); } + function deleteAttachment(attachmentID){ + if (confirm("Do you really want to delete this attachment? This will also delete all attached files.") == true) { + $.ajax({ + type: "GET", + url: "ajax_processing.php", + cache: false, + data: "action=deleteAttachment&attachmentID=" + attachmentID, + success: function(html) { updateAttachments(); } - }); + }); - } + } - } + } - function deleteSFXProvider(sfxProviderID){ - if (confirm("Do you really want to delete this terms tool resource link?") == true) { - $.ajax({ - type: "GET", - url: "ajax_processing.php", - cache: false, - data: "action=deleteSFXProvider&sfxProviderID=" + sfxProviderID, - success: function(html) { updateSFXProviders(); } + function deleteSFXProvider(sfxProviderID){ + if (confirm("Do you really want to delete this terms tool resource link?") == true) { + $.ajax({ + type: "GET", + url: "ajax_processing.php", + cache: false, + data: "action=deleteSFXProvider&sfxProviderID=" + sfxProviderID, + success: function(html) { updateSFXProviders(); } - }); + }); - } + } - } + } function showFullAttachmentText(attachmentID){ @@ -393,102 +393,102 @@ function hideFullAttachmentText(attachmentID){ } - var exists = ''; - - function checkUploadDocument (file, extension){ - - $.ajax({ - type: "GET", - url: "ajax_processing.php", - cache: false, - data: "action=checkUploadDocument&uploadDocument=" + file, - success: function(response) { - if (response == "1"){ - exists = "1"; - $("#div_file_message").html(" File name is already being used."); - return false; - }else{ - $("#div_file_message").html(""); - exists = "0"; - } - } - - - }); - } - - - - - function replaceFile(){ - fileName = $("#upload_button").val(); - //used for the Document Edit form - defaults to show current uploaded file with an option to replace - //replace html contents with browse for uploading document. - $('#div_uploadFile').html("
"); - - //also reinitialize the code for uploading the file - new AjaxUpload('upload_button', - {action: 'ajax_processing.php?action=uploadDocument', - name: 'myfile', - onChange : function (file, extension){checkUploadDocument(file, extension);}, - onComplete : function(data){ - fileName=data; - - if (exists == "1"){ - $("#div_file_message").html(" File name is already being used."); - }else{ - $("#div_uploadFile").html("" + fileName + " successfully uploaded."); - - } - - } - }); - - } - - - - - - function changeProdUse(expressionID){ - $.ajax({ - type: "GET", - url: "ajax_processing.php", - cache: false, - data: "action=setProdUse&expressionID=" + expressionID + "&licenseID=" + $("#licenseID").val() + "&productionUseInd=" + getCheckboxValue("productionUseInd_" + expressionID), - success: function(html) { - $("#span_prod_use_" + expressionID).html(html); - - // close the span in 3 secs - setTimeout("emptyDiv('span_prod_use_" + expressionID + "');",3000); - } - - - }); - } - - - - - function setParentOrder(column, direction){ - parentOrderBy = column + " " + direction; - updateDocuments(); - } - - - function setChildOrder(column, direction){ - childOrderBy = column + " " + direction; - updateDocuments(); - } - - - function setParentArchivedOrder(column, direction){ - parentArchivedOrderBy = column + " " + direction; - updateArchivedDocuments(); - } - - - function setChildArchivedOrder(column, direction){ - childArchivedOrderBy = column + " " + direction; - updateArchivedDocuments(); - } \ No newline at end of file + var exists = ''; + + function checkUploadDocument (file, extension){ + + $.ajax({ + type: "GET", + url: "ajax_processing.php", + cache: false, + data: "action=checkUploadDocument&uploadDocument=" + file, + success: function(response) { + if (response == "1"){ + exists = "1"; + $("#div_file_message").html(" File name is already being used."); + return false; + }else{ + $("#div_file_message").html(""); + exists = "0"; + } + } + + + }); + } + + + + + function replaceFile(){ + fileName = $("#upload_button").val(); + //used for the Document Edit form - defaults to show current uploaded file with an option to replace + //replace html contents with browse for uploading document. + $('#div_uploadFile').html("
"); + + //also reinitialize the code for uploading the file + new AjaxUpload('upload_button', + {action: 'ajax_processing.php?action=uploadDocument', + name: 'myfile', + onChange : function (file, extension){checkUploadDocument(file, extension);}, + onComplete : function(data){ + fileName=data; + + if (exists == "1"){ + $("#div_file_message").html(" File name is already being used."); + }else{ + $("#div_uploadFile").html("" + fileName + " successfully uploaded."); + + } + + } + }); + + } + + + + + + function changeProdUse(expressionID){ + $.ajax({ + type: "GET", + url: "ajax_processing.php", + cache: false, + data: "action=setProdUse&expressionID=" + expressionID + "&licenseID=" + $("#licenseID").val() + "&productionUseInd=" + getCheckboxValue("productionUseInd_" + expressionID), + success: function(html) { + $("#span_prod_use_" + expressionID).html(html); + + // close the span in 3 secs + setTimeout("emptyDiv('span_prod_use_" + expressionID + "');",3000); + } + + + }); + } + + + + + function setParentOrder(column, direction){ + parentOrderBy = column + " " + direction; + updateDocuments(); + } + + + function setChildOrder(column, direction){ + childOrderBy = column + " " + direction; + updateDocuments(); + } + + + function setParentArchivedOrder(column, direction){ + parentArchivedOrderBy = column + " " + direction; + updateArchivedDocuments(); + } + + + function setChildArchivedOrder(column, direction){ + childArchivedOrderBy = column + " " + direction; + updateArchivedDocuments(); + } From d845dc95ab33ebd55a259a5a53a5331b9d00227c Mon Sep 17 00:00:00 2001 From: Ryan Chisum Date: Thu, 28 Jan 2016 09:49:03 -0700 Subject: [PATCH 08/55] CAMP-853: Removed Center Tag from Header --- css/thickbox.css | 2 +- templates/header.php | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/css/thickbox.css b/css/thickbox.css index 377ad89..541182c 100644 --- a/css/thickbox.css +++ b/css/thickbox.css @@ -52,7 +52,7 @@ } #TB_window { - /*-*/position: absolute; + position: fixed; background: #ffffff; z-index: 102; color:#000000; diff --git a/templates/header.php b/templates/header.php index a44a8c1..a42f1cb 100644 --- a/templates/header.php +++ b/templates/header.php @@ -66,15 +66,15 @@ -
+
-
+
-
+
From 7a8c1f68f885ebfd83ecee78864ba0d4599789d5 Mon Sep 17 00:00:00 2001 From: Ryan Chisum Date: Thu, 28 Jan 2016 09:56:33 -0700 Subject: [PATCH 09/55] CAMP-853: Replaced Center Tag in Header --- templates/header.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/header.php b/templates/header.php index a42f1cb..9fb2bf5 100644 --- a/templates/header.php +++ b/templates/header.php @@ -66,15 +66,15 @@ - +/
- +
- + - - > - > + - +
- +
- - + +
From d28dcb82d749cf48ba260e5573373a13cf9f9529 Mon Sep 17 00:00:00 2001 From: Ryan Chisum Date: Fri, 29 Jan 2016 09:25:26 -0700 Subject: [PATCH 10/55] CAMP-853: Final CSS --- ajax_forms.php | 4 +-- css/macFFBgHack.png | Bin 0 -> 207 bytes css/style.css | 63 +++++++++++++++++++++++++++++++++++++++---- templates/header.php | 6 ++--- 4 files changed, 63 insertions(+), 10 deletions(-) create mode 100644 css/macFFBgHack.png diff --git a/ajax_forms.php b/ajax_forms.php index 7f02d22..3fae805 100644 --- a/ajax_forms.php +++ b/ajax_forms.php @@ -1007,8 +1007,8 @@
diff --git a/css/macFFBgHack.png b/css/macFFBgHack.png new file mode 100644 index 0000000000000000000000000000000000000000..c6473b324ee1dae1faaacc0826639833f551116c GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAIEX7WqAsj$Z!;#Vf4nJ za0`Jjl>Qs8<JF;+Fd5q0wCR k?u=~bH}2*0f`J3~k>FVdQ&MBb@0BAfpf&c&j literal 0 HcmV?d00001 diff --git a/css/style.css b/css/style.css index e513013..d2bf575 100644 --- a/css/style.css +++ b/css/style.css @@ -36,6 +36,7 @@ body { table { border-collapse: collapse; border-spacing: 0; + /*-*/margin: 0 auto; } table:nth-of-type(1) td { @@ -243,6 +244,7 @@ table.dataTable { margin-top: 11px; margin-bottom: 10px; text-align: left; + /*-*/margin-left: 0; } table.dataTable td { @@ -1035,9 +1037,8 @@ a.helpfulLink { } #records-per-page { - float: left; - clear: both; -} + float: right; +=} /*--- Login Form Inline with Search Body ---*/ @@ -1293,7 +1294,7 @@ table.thickboxTable .headerText { cursor: pointer; } -/*--- Adjust Update User/Expression Types/Qualifier/ Form Modal Window ---*/ +/*--- Adjust Update User/Qualifier/ Form Modal Window ---*/ #div_updateForm input[value=Update] { color: #FFFFFF; @@ -1365,6 +1366,43 @@ table.thickboxTable .headerText { cursor: pointer; } +/*--- Adjust Update Expression Types Form Modal Window ---*/ + +#div_updateForm input#update-expression-type { + color: #FFFFFF; + font-family: "Arial", sans-serif; + font-size: 11px; + font-weight: normal; + background: #1b76a9; + border: none; + padding: 5px 10px; + text-transform: capitalize; + margin-left: 5px; +} + +#div_updateForm input#update-expression-type:hover { + cursor: pointer; +} + +#div_updateForm input#cancel-expression-type { + color: #FFFFFF; + font-family: "Arial", sans-serif; + font-size: 11px; + font-weight: normal; + background: #1b76a9; + border: none; + padding: 5px 10px; + text-transform: capitalize; + margin-left: 5px; + position: relative; + left: -120px; + float: none; +} + +#div_updateForm input#cancel-expression-type:hover { + cursor: pointer; +} + /*--- Adjust Edit Calendar Settings Form Modal Window ---*/ #div_updateForm input[value=Edit] { @@ -1499,5 +1537,20 @@ select#expressionTypeID { /*--- IE10 and IE11 Only ---*/ @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { - { property:value; } + { } +} + +/*--- Firefox Only ---*/ + +@-moz-document url-prefix() { + #div_updateForm input#cancel-expression-type { + left: -110px; + } +} + +/*--- Left Align Table Header Text ---*/ + +table.dataTable th { + text-align: left; } + diff --git a/templates/header.php b/templates/header.php index 9fb2bf5..a42f1cb 100644 --- a/templates/header.php +++ b/templates/header.php @@ -66,15 +66,15 @@ -/
+
-
+ - +
-
+ From 0b168282ca626424abf5bf837d9719aaf9376d1f Mon Sep 17 00:00:00 2001 From: Ryan Chisum Date: Wed, 9 Mar 2016 09:54:06 -0700 Subject: [PATCH 12/55] CAMP-925: Various Layout Fixes/Issues and Downtime CSS --- css/style.css | 8 ++++++++ templates/header.php | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/css/style.css b/css/style.css index cceaf37..ed10d03 100644 --- a/css/style.css +++ b/css/style.css @@ -1580,3 +1580,11 @@ a#help:before { font-size: 11px; margin-right: 3px; } + +/*--- Adjustments for Language Dropdown ---*/ + +select#lang { + border: none; + margin-left: 10px; + background-color: #fff; +} diff --git a/templates/header.php b/templates/header.php index db164aa..db191b8 100644 --- a/templates/header.php +++ b/templates/header.php @@ -80,7 +80,7 @@ - - + - - - + +
From 3a3a2878e39c408fcb87a42eeabd0afcc861fdd1 Mon Sep 17 00:00:00 2001 From: Ryan Chisum Date: Mon, 22 Feb 2016 13:46:44 -0700 Subject: [PATCH 11/55] Added Help Link to Logout Menu --- css/style.css | 26 ++++++++++++++++++++++++++ templates/header.php | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/css/style.css b/css/style.css index d2bf575..cceaf37 100644 --- a/css/style.css +++ b/css/style.css @@ -1554,3 +1554,29 @@ table.dataTable th { text-align: left; } +/*--- Help Menu Link ---*// + +span#divider { + font-size: 12px; + position: relative; + top: 4px; +} + +a#help { + text-decoration: none; + font-size: 12px; + position: relative; + top: 4px; + margin-left: 5px; +} + +a#help:hover { + color: #ccc; +} + +a#help:before { + font-family: FontAwesome; + content: "\f059"; + font-size: 11px; + margin-right: 3px; +} diff --git a/templates/header.php b/templates/header.php index a42f1cb..db164aa 100644 --- a/templates/header.php +++ b/templates/header.php @@ -93,7 +93,7 @@ } ?> -
settings->authModule == 'Y'){ echo "logout"; } ?> +
settings->authModule == 'Y'){ echo "logout | Help"; } ?>
  +
Date: Wed, 9 Mar 2016 10:35:32 -0700 Subject: [PATCH 13/55] CAMP-925: Various Layout Fixes/Issues and Downtime CSS --- not_available.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/not_available.php b/not_available.php index 03d5eb9..3540321 100644 --- a/not_available.php +++ b/not_available.php @@ -63,7 +63,7 @@ if ($_GET['errorMessage']){ echo "

" . $_GET['errorMessage'] . "

"; }else{ - echo "

You have not been set up to have access to the Licensing Module.

"; + echo "

Please contact your Administrator for access to the Licensing Module.

"; } ?> From c5a34820fe24adac8c26d8ddc7cf442a876e99c9 Mon Sep 17 00:00:00 2001 From: Bradley Droubay Date: Mon, 14 Mar 2016 14:40:17 -0600 Subject: [PATCH 14/55] Merged localization functionality (French) into our branch --- LangCodes.php | 23 + admin.php | 56 +- admin/classes/common/DBService.php | 3 +- admin/classes/common/Object.php | 176 +-- admin/classes/domain/License.php | 1364 +++++++++---------- ajax_forms.php | 273 ++-- ajax_htmldata.php | 256 ++-- ajax_processing.php | 358 ++--- calendar.php | 544 ++++---- compare.php | 4 +- css/style.css | 4 + directory.php | 18 +- in_progress.php | 6 +- index.php | 38 +- install/css/style.css | 23 +- install/index.php | 41 +- install/manual_upgrade_charset_utf8.txt | 6 + install/protected/install.sql | 38 +- install/protected/update_latin1-to-utf8.sql | 20 + js/admin.js | 20 +- js/common.js | 1 - js/forms/attachmentForm.js | 12 +- js/forms/documentForm.js | 18 +- js/forms/expressionForm.js | 4 +- js/forms/licenseForm.js | 15 +- js/forms/sfxForm.js | 4 +- js/forms/signatureForm.js | 9 +- js/index.js | 2 +- js/license.js | 644 ++++----- js/plugins/Gettext.js | 1265 +++++++++++++++++ js/plugins/date.js | 996 +++++++------- js/plugins/jquery.datePicker.js | 12 +- js/plugins/translate.js | 9 + license.php | 40 +- locale/fr_FR/LC_MESSAGES/messages.mo | Bin 0 -> 21653 bytes locale/fr_FR/LC_MESSAGES/messages.po | 1352 ++++++++++++++++++ not_available.php | 4 +- templates/header.php | 153 ++- terms_report.php | 2 +- 39 files changed, 5283 insertions(+), 2530 deletions(-) create mode 100644 LangCodes.php create mode 100644 install/manual_upgrade_charset_utf8.txt create mode 100644 install/protected/update_latin1-to-utf8.sql create mode 100644 js/plugins/Gettext.js create mode 100644 js/plugins/translate.js create mode 100644 locale/fr_FR/LC_MESSAGES/messages.mo create mode 100644 locale/fr_FR/LC_MESSAGES/messages.po diff --git a/LangCodes.php b/LangCodes.php new file mode 100644 index 0000000..2d58bc7 --- /dev/null +++ b/LangCodes.php @@ -0,0 +1,23 @@ +'fr_FR', + 'en'=>'en_US' + ); + return $all_lang[$code]; + } + public function getNameLang($code_lang){ + $name_lang=array( + 'fr'=>_('French'), + 'en'=>_('English') + ); + return $name_lang[$code_lang]; + } +} +?> \ No newline at end of file diff --git a/admin.php b/admin.php index b298854..98991ea 100644 --- a/admin.php +++ b/admin.php @@ -19,7 +19,7 @@ include_once 'directory.php'; -$pageTitle='Administration'; +$pageTitle=_('Administration'); include 'templates/header.php'; //set referring page @@ -32,11 +32,11 @@
-Users   -
add new user +   +


-Loading... +
@@ -49,11 +49,11 @@
-Document Types   -
add new document type +   +


-Loading... +
@@ -63,11 +63,11 @@
-Expression Types   -
add new expression type +   +


-Loading... +
@@ -76,11 +76,11 @@
-Qualifiers   -
add new qualifier +   +


-Loading... +
@@ -90,11 +90,11 @@
-Signature Types   -
add new signature type +   +


-Loading... +
@@ -105,11 +105,11 @@
-License Statuses   -
add new license status +   +


-Loading... +
@@ -126,10 +126,10 @@
-Calendar Settings   +  

-Loading... +
@@ -146,11 +146,11 @@
- Consortia   -
add new consortium +    +


- Loading... +
@@ -160,11 +160,11 @@
- Providers   -
add new provider +    +


- Loading... +
@@ -177,7 +177,7 @@ error = mysqli_error($this->db)) { - throw new Exception("There was a problem with the database: " . $this->error); + throw new Exception(_("There was a problem with the database: ") . $this->error); } } @@ -48,6 +48,7 @@ protected function connect() { $databaseName = $this->config->database->name; $this->db = mysqli_connect($host, $username, $password, $databaseName); $this->checkForError(); + mysqli_set_charset($this->db, 'utf8'); } protected function disconnect() { diff --git a/admin/classes/common/Object.php b/admin/classes/common/Object.php index 3ebdbf8..948b3bb 100644 --- a/admin/classes/common/Object.php +++ b/admin/classes/common/Object.php @@ -1,89 +1,89 @@ -. -** -************************************************************************************************************************** -*/ - - -class Object { - - public function __construct(NamedArguments $arguments = NULL) { - if (method_exists($this, 'init')) { - if (!is_a($arguments, 'NamedArguments')) { - $arguments = new NamedArguments(array()); - } - $this->init($arguments); - } - } - - // An optional initializer to use instead of |__construct()|. - protected function init(NamedArguments $arguments) { - - } - - public function __destruct() { - if (method_exists($this, 'dealloc')) { - $this->dealloc(); - } - } - - // An optional method called on deconstruction instead of |__deconstruct()|. - protected function dealloc() { - - } - - // Setters are functions called |$instance->setPropertyName($value)|. - public function __set($name, $value) { - $methodName = 'set' . ucfirst($name); - $this->$methodName($value); - } - - // Getters are functions called |$instance->propertyName()|. - public function __get($name) { - return $this->$name(); - } - - // Default setter uses declared properties. - protected function setValueForKey($key, $value) { - if (property_exists($this, $key)) { - $this->$key = $value; - } else { - throw new Exception("Cannot set value for undefined key ($key)."); - } - } - - // Default getter uses declared properties. - protected function valueForKey($key) { - if (property_exists($this, $key)) { - return $this->$key; - } else { - throw new Exception("Cannot get value for undefined key ($key)."); - } - } - - // Call |valueForKey| and |setValueForKey| as default setter and getter. - public function __call($name, $arguments) { - if (preg_match('/^set[A-Z]/', $name)) { - $key = preg_replace('/^set/', '\1', $name); - $key = lcfirst($key); - $this->setValueForKey($key, $arguments[0]); - } else { - return $this->valueForKey($name); - } - } - -} - +. +** +************************************************************************************************************************** +*/ + + +class Object { + + public function __construct(NamedArguments $arguments = NULL) { + if (method_exists($this, 'init')) { + if (!is_a($arguments, 'NamedArguments')) { + $arguments = new NamedArguments(array()); + } + $this->init($arguments); + } + } + + // An optional initializer to use instead of |__construct()|. + protected function init(NamedArguments $arguments) { + + } + + public function __destruct() { + if (method_exists($this, 'dealloc')) { + $this->dealloc(); + } + } + + // An optional method called on deconstruction instead of |__deconstruct()|. + protected function dealloc() { + + } + + // Setters are functions called |$instance->setPropertyName($value)|. + public function __set($name, $value) { + $methodName = 'set' . ucfirst($name); + $this->$methodName($value); + } + + // Getters are functions called |$instance->propertyName()|. + public function __get($name) { + return $this->$name(); + } + + // Default setter uses declared properties. + protected function setValueForKey($key, $value) { + if (property_exists($this, $key)) { + $this->$key = $value; + } else { + throw new Exception("Cannot set value for undefined key ($key)."); + } + } + + // Default getter uses declared properties. + protected function valueForKey($key) { + if (property_exists($this, $key)) { + return $this->$key; + } else { + throw new Exception(_("Cannot get value for undefined key (").$key.")."); + } + } + + // Call |valueForKey| and |setValueForKey| as default setter and getter. + public function __call($name, $arguments) { + if (preg_match('/^set[A-Z]/', $name)) { + $key = preg_replace('/^set/', '\1', $name); + $key = lcfirst($key); + $this->setValueForKey($key, $arguments[0]); + } else { + return $this->valueForKey($name); + } + } + +} + ?> \ No newline at end of file diff --git a/admin/classes/domain/License.php b/admin/classes/domain/License.php index 77aed52..4fb0333 100644 --- a/admin/classes/domain/License.php +++ b/admin/classes/domain/License.php @@ -1,682 +1,682 @@ -. -** -************************************************************************************************************************** -*/ - - -class License extends DatabaseObject { - - protected function defineRelationships() {} - - protected function overridePrimaryKeyName() {} - - - - //returns array of Document objects - used by forms to get dropdowns of available documents - public function getDocuments(){ - - $query = "SELECT D.* - FROM Document D - LEFT JOIN Signature S ON (S.documentID = D.documentID) - LEFT JOIN DocumentType DT ON (DT.documentTypeID = D.documentTypeID) - WHERE licenseID = '" . $this->licenseID . "' - AND (D.expirationDate is null OR D.expirationDate = '0000-00-00') - GROUP BY D.documentID - ORDER BY D.shortName;"; - - $result = $this->db->processQuery($query, 'assoc'); - - $objects = array(); - - //need to do this since it could be that there's only one request and this is how the dbservice returns result - if (isset($result['documentID'])){ - $object = new Document(new NamedArguments(array('primaryKey' => $result['documentID']))); - array_push($objects, $object); - }else{ - foreach ($result as $row) { - $object = new Document(new NamedArguments(array('primaryKey' => $row['documentID']))); - array_push($objects, $object); - } - } - - return $objects; - } - - - //returns array of Document objects (parent documents) - used for document display on license record - public function getDocumentsWithoutParents($orderBy){ - - $query = "SELECT D.* - FROM Document D - LEFT JOIN Signature S ON (S.documentID = D.documentID) - LEFT JOIN DocumentType DT ON (DT.documentTypeID = D.documentTypeID) - WHERE licenseID = '" . $this->licenseID . "' - AND (D.expirationDate is null OR D.expirationDate = '0000-00-00') - AND (D.parentDocumentID is null OR D.parentDocumentID=0) - GROUP BY D.documentID - ORDER BY " . $orderBy . ";"; - - $result = $this->db->processQuery($query, 'assoc'); - - $objects = array(); - - //need to do this since it could be that there's only one request and this is how the dbservice returns result - if (isset($result['documentID'])){ - $object = new Document(new NamedArguments(array('primaryKey' => $result['documentID']))); - array_push($objects, $object); - }else{ - foreach ($result as $row) { - $object = new Document(new NamedArguments(array('primaryKey' => $row['documentID']))); - array_push($objects, $object); - } - } - - return $objects; - } - - - - //returns array of Document objects that are archived - used by forms to get dropdowns of available documents - public function getArchivedDocuments(){ - - $query = "SELECT D.* FROM Document D - LEFT JOIN Signature S ON (S.documentID = D.documentID) - LEFT JOIN DocumentType DT ON (DT.documentTypeID = D.documentTypeID) - WHERE D.documentTypeID = DT.documentTypeID - AND licenseID = '" . $this->licenseID . "' - AND (D.expirationDate is not null AND D.expirationDate != '0000-00-00') - GROUP BY D.documentID - ORDER BY D.shortName asc;"; - - $result = $this->db->processQuery($query, 'assoc'); - - $objects = array(); - - //need to do this since it could be that there's only one request and this is how the dbservice returns result - if (isset($result['documentID'])){ - $object = new Document(new NamedArguments(array('primaryKey' => $result['documentID']))); - array_push($objects, $object); - }else{ - foreach ($result as $row) { - $object = new Document(new NamedArguments(array('primaryKey' => $row['documentID']))); - array_push($objects, $object); - } - } - - return $objects; - } - - //returns array of Document objects that are archived - used by document display on license record - public function getArchivedDocumentsWithoutParents($orderBy){ - - $query = "SELECT D.* FROM Document D - LEFT JOIN Signature S ON (S.documentID = D.documentID) - LEFT JOIN DocumentType DT ON (DT.documentTypeID = D.documentTypeID) - WHERE D.documentTypeID = DT.documentTypeID - AND licenseID = '" . $this->licenseID . "' - AND (D.expirationDate is not null AND D.expirationDate != '0000-00-00') - AND (D.parentDocumentID is null OR D.parentDocumentID=0) - GROUP BY D.documentID - ORDER BY " . $orderBy . ";"; - - $result = $this->db->processQuery($query, 'assoc'); - - $objects = array(); - - //need to do this since it could be that there's only one request and this is how the dbservice returns result - if (isset($result['documentID'])){ - $object = new Document(new NamedArguments(array('primaryKey' => $result['documentID']))); - array_push($objects, $object); - }else{ - foreach ($result as $row) { - $object = new Document(new NamedArguments(array('primaryKey' => $row['documentID']))); - array_push($objects, $object); - } - } - - return $objects; - } - - - - - - //returns array of Attachment objects - public function getAttachments(){ - - $query = "SELECT * FROM Attachment where licenseID = '" . $this->licenseID . "' ORDER BY attachmentID"; - - $result = $this->db->processQuery($query, 'assoc'); - - $objects = array(); - - //need to do this since it could be that there's only one request and this is how the dbservice returns result - if (isset($result['attachmentID'])){ - $object = new Attachment(new NamedArguments(array('primaryKey' => $result['attachmentID']))); - array_push($objects, $object); - }else{ - foreach ($result as $row) { - $object = new Attachment(new NamedArguments(array('primaryKey' => $row['attachmentID']))); - array_push($objects, $object); - } - } - - return $objects; - } - - - - - //removes this license - public function removeLicense(){ - - //delete all documents and associated expressions and SFX providers - $document = new Document(); - foreach ($this->getDocuments() as $document) { - //delete all expressions and expression notes - $expression = new Expression(); - foreach ($document->getExpressions() as $expression) { - $expressionNote = new ExpressionNote(); - foreach ($expression->getExpressionNotes() as $expressionNote) { - $expressionNote->delete(); - } - - $expression->removeQualifiers(); - $expression->delete(); - } - - $sfxProvider = new SFXProvider(); - foreach ($document->getSFXProviders() as $sfxProvider) { - $sfxProvider->delete(); - } - - $signature = new Signature(); - foreach ($document->getSignatures() as $signature) { - $signature->delete(); - } - - $document->delete(); - } - - - //delete all attachments - $attachment = new Attachment(); - foreach ($this->getAttachments() as $attachment) { - $attachmentFile = new AttachmentFile(); - foreach ($attachment->getAttachmentFiles() as $attachmentFile) { - $attachmentFile->delete(); - } - $attachment->delete(); - } - - - $this->delete(); - } - - public function searchQuery($whereAdd, $orderBy = '', $limit = '', $count = false) { - if (count($whereAdd) > 0){ - $whereStatement = " AND " . implode(" AND ", $whereAdd); - }else{ - $whereStatement = ""; - } - - if ($limit != ""){ - $limitStatement = " LIMIT " . $limit; - }else{ - $limitStatement = ""; - } - - $config = new Configuration; - - //if the org module is installed get the org name from org database - if ($config->settings->organizationsModule == 'Y') { - $dbName = $config->settings->organizationsDatabaseName; - if ($count) { - $select = "SELECT COUNT(DISTINCT L.licenseID) count"; - } else { - $select = "SELECT distinct L.licenseID, L.shortName licenseName, O2.name consortiumName, O.name providerName, S.shortName status"; - } - //now formulate query - $query = $select . " - FROM " . $dbName . ".Organization O, License L - LEFT JOIN " . $dbName . ".Organization O2 ON (O2.organizationID = L.consortiumID) - LEFT JOIN " . $dbName . ".Alias A ON (A.organizationID = L.organizationID) - LEFT JOIN Status S ON (S.statusID = L.statusID) - LEFT JOIN Document D ON (D.licenseID = L.licenseID) - LEFT JOIN Expression E ON (D.documentID = E.documentID) - WHERE O.organizationID = L.organizationID - " . $whereStatement; - - } else { - if ($count) { - $select = "SELECT COUNT(DISTINCT L.licenseID) count"; - } else { - $select = "SELECT distinct L.licenseID, L.shortName licenseName, C.shortName consortiumName, O.shortName providerName, S.shortName status"; - } - //now formulate query - $query = $select . " - FROM Organization O, License L - LEFT JOIN Consortium C ON (C.consortiumID = L.consortiumID) - LEFT JOIN Status S ON (S.statusID = L.statusID) - LEFT JOIN Document D ON (D.licenseID = L.licenseID) - LEFT JOIN Expression E ON (D.documentID = E.documentID) - WHERE O.organizationID = L.organizationID - " . $whereStatement; - - } - - if ($orderBy) { - $query .= "\nORDER BY " . $orderBy; - } - - if ($limit) { - $query .= "\nLIMIT " . $limit; - } - - return $query; - } - - public function searchCount($whereAdd) { - $query = $this->searchQuery($whereAdd, '', '', true); - $result = $this->db->processQuery(stripslashes($query), 'assoc'); - return $result['count']; - } - - //returns array based on search - public function search($whereAdd, $orderBy, $limit){ - $query = $this->searchQuery($whereAdd, $orderBy, $limit); - - $result = $this->db->processQuery(stripslashes($query), 'assoc'); - - - $searchArray = array(); - $resultArray = array(); - - //need to do this since it could be that there's only one result and this is how the dbservice returns result - if (isset($result['licenseID'])){ - - foreach (array_keys($result) as $attributeName) { - $resultArray[$attributeName] = $result[$attributeName]; - } - - array_push($searchArray, $resultArray); - }else{ - foreach ($result as $row) { - $resultArray = array(); - foreach (array_keys($row) as $attributeName) { - $resultArray[$attributeName] = $row[$attributeName]; - } - array_push($searchArray, $resultArray); - } - } - - return $searchArray; - - - } - - - - - - - //returns array - public function getInProgressLicenses(){ - $config = new Configuration; - - //if the org module is installed get the org name from org database - if ($config->settings->organizationsModule == 'Y'){ - $dbName = $config->settings->organizationsDatabaseName; - - //execute query to get default licenses - $query = "SELECT L.licenseID, L.shortName licenseName, O2.name consortiumName, O.name providerName, S.shortName status - FROM " . $dbName . ".Organization O, License L - LEFT JOIN " . $dbName . ".Organization O2 ON (O2.organizationID = L.consortiumID) - LEFT JOIN Status S ON (S.statusID = L.statusID) - WHERE O.organizationID = L.organizationID - AND (S.shortName in ('Editing Expressions','Awaiting Document') OR L.statusID IS NULL) - ORDER BY L.shortName"; - }else{ - - //execute query to get default licenses - $query = "SELECT L.licenseID, L.shortName licenseName, C.shortName consortiumName, O.shortName providerName, S.shortName status - FROM Organization O, License L - LEFT JOIN Consortium C ON (C.consortiumID = L.consortiumID) - LEFT JOIN Status S ON (S.statusID = L.statusID) - WHERE O.organizationID = L.organizationID - AND (S.shortName in ('Editing Expressions','Awaiting Document') OR L.statusID IS NULL) - ORDER BY L.shortName"; - - } - - $result = $this->db->processQuery($query, 'assoc'); - - $searchArray = array(); - $resultArray = array(); - - //need to do this since it could be that there's only one result and this is how the dbservice returns result - if (isset($result['licenseID'])){ - - foreach (array_keys($result) as $attributeName) { - $resultArray[$attributeName] = $result[$attributeName]; - } - - array_push($searchArray, $resultArray); - }else{ - foreach ($result as $row) { - $resultArray = array(); - foreach (array_keys($row) as $attributeName) { - $resultArray[$attributeName] = $row[$attributeName]; - } - array_push($searchArray, $resultArray); - } - } - - return $searchArray; - } - - - - //returns array of Expressions - public function getAllDocumentsForExpressionDisplay(){ - - $query="SELECT distinct D.documentID, D.shortName documentName - FROM Document D, Expression E - WHERE E.documentID = D.documentID - AND licenseID = '" . $this->licenseID . "' AND (D.expirationDate is null or D.expirationDate ='0000-00-00') - ORDER BY documentID;"; - - $result = $this->db->processQuery($query, 'assoc'); - - $objects = array(); - - //need to do this since it could be that there's only one request and this is how the dbservice returns result - if (isset($result['documentID'])){ - $object = new Document(new NamedArguments(array('primaryKey' => $result['documentID']))); - array_push($objects, $object); - }else{ - foreach ($result as $row) { - $object = new Document(new NamedArguments(array('primaryKey' => $row['documentID']))); - array_push($objects, $object); - } - } - - return $objects; - } - - - //search used for the autocomplete - public function searchOrganizations($q){ - $config = new Configuration; - - $q = str_replace("+", " ",$q); - $q = str_replace("%", "&",$q); - - $orgArray = array(); - - //if the org module is installed get the org names from org database - if ($config->settings->organizationsModule == 'Y'){ - - $dbName = $config->settings->organizationsDatabaseName; - - - $query = "SELECT CONCAT(A.name, ' (', O.name, ')') name, O.organizationID - FROM " . $dbName . ".Alias A, " . $dbName . ".Organization O - WHERE A.organizationID=O.organizationID - AND upper(A.name) like upper('%" . $q . "%') - UNION - SELECT name, organizationID - FROM " . $dbName . ".Organization - WHERE upper(name) like upper('%" . $q . "%') - ORDER BY 1;"; - - $result = mysqli_query($this->db->getDatabase(), $query); - - while ($row = mysqli_fetch_assoc($result)){ - $orgArray[] = $row['organizationID'] . "|" . $row['name']; - } - - - //otherwise get the orgs from this database - }else{ - $query = "SELECT shortName, organizationID - FROM Organization - WHERE upper(shortName) like upper('%" . $q . "%') - ORDER BY 1;"; - - $result = mysqli_query($this->db->getDatabase(), $query); - - while ($row = mysqli_fetch_assoc($result)){ - $orgArray[] = $row['organizationID'] . "|" . $row['shortName']; - } - - - } - - - return $orgArray; - } - - - - - //search used index page drop down - public function getOrganizationList(){ - $config = new Configuration; - - $orgArray = array(); - - //if the org module is installed get the org names from org database - if ($config->settings->organizationsModule == 'Y'){ - $dbName = $config->settings->organizationsDatabaseName; - $query = "SELECT name, organizationID FROM " . $dbName . ".Organization ORDER BY 1;"; - - //otherwise get the orgs from this database - }else{ - $query = "SELECT shortName name, organizationID FROM Organization ORDER BY 1;"; - } - - - $result = $this->db->processQuery($query, 'assoc'); - - $resultArray = array(); - - //need to do this since it could be that there's only one result and this is how the dbservice returns result - if (isset($result['organizationID'])){ - - foreach (array_keys($result) as $attributeName) { - $resultArray[$attributeName] = $result[$attributeName]; - } - - array_push($orgArray, $resultArray); - }else{ - foreach ($result as $row) { - $resultArray = array(); - foreach (array_keys($row) as $attributeName) { - $resultArray[$attributeName] = $row[$attributeName]; - } - array_push($orgArray, $resultArray); - } - } - - return $orgArray; - - } - - - - //go to organizations and get the org name for this license - public function getOrganizationName(){ - $config = new Configuration; - - //if the org module is installed get the org name from org database - if ($config->settings->organizationsModule == 'Y'){ - $dbName = $config->settings->organizationsDatabaseName; - - $orgArray = array(); - $query = "SELECT name FROM " . $dbName . ".Organization WHERE organizationID = " . $this->organizationID; - - if ($result = mysqli_query($this->db->getDatabase(), $query)){ - - while ($row = mysqli_fetch_assoc($result)){ - return $row['name']; - } - } - //otherwise if the org module is not installed get the org name from this database - }else{ - $organization = new Organization(new NamedArguments(array('primaryKey' => $this->organizationID))); - return $organization->shortName; - } - } - - - - //insert the organization / provider if it doesn't already exist - public function setOrganization($orgID, $orgName){ - $config = new Configuration; - - //if the org module is installed get the org name from org database - if ($config->settings->organizationsModule == 'Y'){ - //if no org ID was passed in then we need to create a new organization shell - if (!$orgID){ - - $dbName = $config->settings->organizationsDatabaseName; - $orgName = str_replace("'", "''",$orgName); - - $query = "INSERT INTO " . $dbName . ".Organization (name, createDate, createLoginID) VALUES ('" . $orgName . "', NOW(), '" . $_SESSION['loginID'] . "')"; - - $this->organizationID = $this->db->processQuery($query); - - }else{ - $this->organizationID = $orgID; - } - - //otherwise if the org module is not installed get the org name from this database - }else{ - - //if no org ID was passed in then we need to create a new provider - if (!$orgID){ - $organization = new Organization(); - $organization->organizationID = ''; - $organization->shortName = $orgName; - $organization->save(); - - $this->organizationID = $organization->primaryKey; - }else{ - $this->organizationID = $orgID; - } - } - } - - - - - - //search used index page drop down - public function getConsortiumList(){ - $config = new Configuration; - - $consortiumArray = array(); - - //if the org module is installed get the consortia names from org database - if ($config->settings->organizationsModule == 'Y'){ - $dbName = $config->settings->organizationsDatabaseName; - $query = "SELECT name, O.organizationID consortiumID - FROM " . $dbName . ".Organization O, - " . $dbName . ".OrganizationRoleProfile ORP, - " . $dbName . ".OrganizationRole - WHERE OrganizationRole.organizationRoleID = ORP.organizationRoleID - AND ORP.organizationID = O.organizationID - AND UPPER(OrganizationRole.shortName) LIKE 'CONSORT%' - ORDER BY 1;"; - - //otherwise get the consortium from this database - }else{ - $query = "SELECT shortName name, consortiumID FROM Consortium ORDER BY 1;"; - } - - - $result = $this->db->processQuery($query, 'assoc'); - - $resultArray = array(); - - //need to do this since it could be that there's only one result and this is how the dbservice returns result - if (isset($result['consortiumID'])){ - - foreach (array_keys($result) as $attributeName) { - $resultArray[$attributeName] = $result[$attributeName]; - } - - array_push($consortiumArray, $resultArray); - }else{ - foreach ($result as $row) { - $resultArray = array(); - foreach (array_keys($row) as $attributeName) { - $resultArray[$attributeName] = $row[$attributeName]; - } - array_push($consortiumArray, $resultArray); - } - } - - return $consortiumArray; - - } - - - - //go to organizations and get the consortia name for this license - public function getConsortiumName(){ - $config = new Configuration; - - //if the org module is installed get the org name from org database - if ($config->settings->organizationsModule == 'Y'){ - $dbName = $config->settings->organizationsDatabaseName; - - $orgArray = array(); - $query = "SELECT name FROM " . $dbName . ".Organization WHERE organizationID = " . $this->consortiumID; - $result = mysqli_query($this->db->getDatabase(), $query); - - while ($row = mysqli_fetch_assoc($result)){ - return $row['name']; - } - //otherwise if the org module is not installed get the consortium name from this database - }else{ - $consortium = new Consortium(new NamedArguments(array('primaryKey' => $this->consortiumID))); - return $consortium->shortName; - } - } - - - - //used for A-Z on search (index) - public function getAlphabeticalList(){ - $alphArray = array(); - $result = mysqli_query($this->db->getDatabase(), "SELECT DISTINCT UPPER(SUBSTR(TRIM(LEADING 'The ' FROM shortName),1,1)) letter, COUNT(SUBSTR(TRIM(LEADING 'The ' FROM shortName),1,1)) letter_count - FROM License L - GROUP BY SUBSTR(TRIM(LEADING 'The ' FROM shortName),1,1) - ORDER BY 1;"); - - while ($row = mysqli_fetch_assoc($result)){ - $alphArray[$row['letter']] = $row['letter_count']; - } - - return $alphArray; - } - - -} - -?> +. +** +************************************************************************************************************************** +*/ + + +class License extends DatabaseObject { + + protected function defineRelationships() {} + + protected function overridePrimaryKeyName() {} + + + + //returns array of Document objects - used by forms to get dropdowns of available documents + public function getDocuments(){ + + $query = "SELECT D.* + FROM Document D + LEFT JOIN Signature S ON (S.documentID = D.documentID) + LEFT JOIN DocumentType DT ON (DT.documentTypeID = D.documentTypeID) + WHERE licenseID = '" . $this->licenseID . "' + AND (D.expirationDate is null OR D.expirationDate = '0000-00-00') + GROUP BY D.documentID + ORDER BY D.shortName;"; + + $result = $this->db->processQuery($query, 'assoc'); + + $objects = array(); + + //need to do this since it could be that there's only one request and this is how the dbservice returns result + if (isset($result['documentID'])){ + $object = new Document(new NamedArguments(array('primaryKey' => $result['documentID']))); + array_push($objects, $object); + }else{ + foreach ($result as $row) { + $object = new Document(new NamedArguments(array('primaryKey' => $row['documentID']))); + array_push($objects, $object); + } + } + + return $objects; + } + + + //returns array of Document objects (parent documents) - used for document display on license record + public function getDocumentsWithoutParents($orderBy){ + + $query = "SELECT D.* + FROM Document D + LEFT JOIN Signature S ON (S.documentID = D.documentID) + LEFT JOIN DocumentType DT ON (DT.documentTypeID = D.documentTypeID) + WHERE licenseID = '" . $this->licenseID . "' + AND (D.expirationDate is null OR D.expirationDate = '0000-00-00') + AND (D.parentDocumentID is null OR D.parentDocumentID=0) + GROUP BY D.documentID + ORDER BY " . $orderBy . ";"; + + $result = $this->db->processQuery($query, 'assoc'); + + $objects = array(); + + //need to do this since it could be that there's only one request and this is how the dbservice returns result + if (isset($result['documentID'])){ + $object = new Document(new NamedArguments(array('primaryKey' => $result['documentID']))); + array_push($objects, $object); + }else{ + foreach ($result as $row) { + $object = new Document(new NamedArguments(array('primaryKey' => $row['documentID']))); + array_push($objects, $object); + } + } + + return $objects; + } + + + + //returns array of Document objects that are archived - used by forms to get dropdowns of available documents + public function getArchivedDocuments(){ + + $query = "SELECT D.* FROM Document D + LEFT JOIN Signature S ON (S.documentID = D.documentID) + LEFT JOIN DocumentType DT ON (DT.documentTypeID = D.documentTypeID) + WHERE D.documentTypeID = DT.documentTypeID + AND licenseID = '" . $this->licenseID . "' + AND (D.expirationDate is not null AND D.expirationDate != '0000-00-00') + GROUP BY D.documentID + ORDER BY D.shortName asc;"; + + $result = $this->db->processQuery($query, 'assoc'); + + $objects = array(); + + //need to do this since it could be that there's only one request and this is how the dbservice returns result + if (isset($result['documentID'])){ + $object = new Document(new NamedArguments(array('primaryKey' => $result['documentID']))); + array_push($objects, $object); + }else{ + foreach ($result as $row) { + $object = new Document(new NamedArguments(array('primaryKey' => $row['documentID']))); + array_push($objects, $object); + } + } + + return $objects; + } + + //returns array of Document objects that are archived - used by document display on license record + public function getArchivedDocumentsWithoutParents($orderBy){ + + $query = "SELECT D.* FROM Document D + LEFT JOIN Signature S ON (S.documentID = D.documentID) + LEFT JOIN DocumentType DT ON (DT.documentTypeID = D.documentTypeID) + WHERE D.documentTypeID = DT.documentTypeID + AND licenseID = '" . $this->licenseID . "' + AND (D.expirationDate is not null AND D.expirationDate != '0000-00-00') + AND (D.parentDocumentID is null OR D.parentDocumentID=0) + GROUP BY D.documentID + ORDER BY " . $orderBy . ";"; + + $result = $this->db->processQuery($query, 'assoc'); + + $objects = array(); + + //need to do this since it could be that there's only one request and this is how the dbservice returns result + if (isset($result['documentID'])){ + $object = new Document(new NamedArguments(array('primaryKey' => $result['documentID']))); + array_push($objects, $object); + }else{ + foreach ($result as $row) { + $object = new Document(new NamedArguments(array('primaryKey' => $row['documentID']))); + array_push($objects, $object); + } + } + + return $objects; + } + + + + + + //returns array of Attachment objects + public function getAttachments(){ + + $query = "SELECT * FROM Attachment where licenseID = '" . $this->licenseID . "' ORDER BY attachmentID"; + + $result = $this->db->processQuery($query, 'assoc'); + + $objects = array(); + + //need to do this since it could be that there's only one request and this is how the dbservice returns result + if (isset($result['attachmentID'])){ + $object = new Attachment(new NamedArguments(array('primaryKey' => $result['attachmentID']))); + array_push($objects, $object); + }else{ + foreach ($result as $row) { + $object = new Attachment(new NamedArguments(array('primaryKey' => $row['attachmentID']))); + array_push($objects, $object); + } + } + + return $objects; + } + + + + + //removes this license + public function removeLicense(){ + + //delete all documents and associated expressions and SFX providers + $document = new Document(); + foreach ($this->getDocuments() as $document) { + //delete all expressions and expression notes + $expression = new Expression(); + foreach ($document->getExpressions() as $expression) { + $expressionNote = new ExpressionNote(); + foreach ($expression->getExpressionNotes() as $expressionNote) { + $expressionNote->delete(); + } + + $expression->removeQualifiers(); + $expression->delete(); + } + + $sfxProvider = new SFXProvider(); + foreach ($document->getSFXProviders() as $sfxProvider) { + $sfxProvider->delete(); + } + + $signature = new Signature(); + foreach ($document->getSignatures() as $signature) { + $signature->delete(); + } + + $document->delete(); + } + + + //delete all attachments + $attachment = new Attachment(); + foreach ($this->getAttachments() as $attachment) { + $attachmentFile = new AttachmentFile(); + foreach ($attachment->getAttachmentFiles() as $attachmentFile) { + $attachmentFile->delete(); + } + $attachment->delete(); + } + + + $this->delete(); + } + + public function searchQuery($whereAdd, $orderBy = '', $limit = '', $count = false) { + if (count($whereAdd) > 0){ + $whereStatement = " AND " . implode(" AND ", $whereAdd); + }else{ + $whereStatement = ""; + } + + if ($limit != ""){ + $limitStatement = " LIMIT " . $limit; + }else{ + $limitStatement = ""; + } + + $config = new Configuration; + + //if the org module is installed get the org name from org database + if ($config->settings->organizationsModule == 'Y') { + $dbName = $config->settings->organizationsDatabaseName; + if ($count) { + $select = "SELECT COUNT(DISTINCT L.licenseID) count"; + } else { + $select = "SELECT distinct L.licenseID, L.shortName licenseName, O2.name consortiumName, O.name providerName, S.shortName status"; + } + //now formulate query + $query = $select . " + FROM " . $dbName . ".Organization O, License L + LEFT JOIN " . $dbName . ".Organization O2 ON (O2.organizationID = L.consortiumID) + LEFT JOIN " . $dbName . ".Alias A ON (A.organizationID = L.organizationID) + LEFT JOIN Status S ON (S.statusID = L.statusID) + LEFT JOIN Document D ON (D.licenseID = L.licenseID) + LEFT JOIN Expression E ON (D.documentID = E.documentID) + WHERE O.organizationID = L.organizationID + " . $whereStatement; + + } else { + if ($count) { + $select = "SELECT COUNT(DISTINCT L.licenseID) count"; + } else { + $select = "SELECT distinct L.licenseID, L.shortName licenseName, C.shortName consortiumName, O.shortName providerName, S.shortName status"; + } + //now formulate query + $query = $select . " + FROM Organization O, License L + LEFT JOIN Consortium C ON (C.consortiumID = L.consortiumID) + LEFT JOIN Status S ON (S.statusID = L.statusID) + LEFT JOIN Document D ON (D.licenseID = L.licenseID) + LEFT JOIN Expression E ON (D.documentID = E.documentID) + WHERE O.organizationID = L.organizationID + " . $whereStatement; + + } + + if ($orderBy) { + $query .= "\nORDER BY " . $orderBy; + } + + if ($limit) { + $query .= "\nLIMIT " . $limit; + } + + return $query; + } + + public function searchCount($whereAdd) { + $query = $this->searchQuery($whereAdd, '', '', true); + $result = $this->db->processQuery(stripslashes($query), 'assoc'); + return $result['count']; + } + + //returns array based on search + public function search($whereAdd, $orderBy, $limit){ + $query = $this->searchQuery($whereAdd, $orderBy, $limit); + + $result = $this->db->processQuery(stripslashes($query), 'assoc'); + + + $searchArray = array(); + $resultArray = array(); + + //need to do this since it could be that there's only one result and this is how the dbservice returns result + if (isset($result['licenseID'])){ + + foreach (array_keys($result) as $attributeName) { + $resultArray[$attributeName] = $result[$attributeName]; + } + + array_push($searchArray, $resultArray); + }else{ + foreach ($result as $row) { + $resultArray = array(); + foreach (array_keys($row) as $attributeName) { + $resultArray[$attributeName] = $row[$attributeName]; + } + array_push($searchArray, $resultArray); + } + } + + return $searchArray; + + + } + + + + + + + //returns array + public function getInProgressLicenses(){ + $config = new Configuration; + + //if the org module is installed get the org name from org database + if ($config->settings->organizationsModule == 'Y'){ + $dbName = $config->settings->organizationsDatabaseName; + + //execute query to get default licenses + $query = "SELECT L.licenseID, L.shortName licenseName, O2.name consortiumName, O.name providerName, S.shortName status + FROM " . $dbName . ".Organization O, License L + LEFT JOIN " . $dbName . ".Organization O2 ON (O2.organizationID = L.consortiumID) + LEFT JOIN Status S ON (S.statusID = L.statusID) + WHERE O.organizationID = L.organizationID + AND (S.shortName in ('Editing Expressions','Awaiting Document') OR L.statusID IS NULL) + ORDER BY L.shortName"; + }else{ + + //execute query to get default licenses + $query = "SELECT L.licenseID, L.shortName licenseName, C.shortName consortiumName, O.shortName providerName, S.shortName status + FROM Organization O, License L + LEFT JOIN Consortium C ON (C.consortiumID = L.consortiumID) + LEFT JOIN Status S ON (S.statusID = L.statusID) + WHERE O.organizationID = L.organizationID + AND (S.shortName in ('Editing Expressions','Awaiting Document') OR L.statusID IS NULL) + ORDER BY L.shortName"; + + } + + $result = $this->db->processQuery($query, 'assoc'); + + $searchArray = array(); + $resultArray = array(); + + //need to do this since it could be that there's only one result and this is how the dbservice returns result + if (isset($result['licenseID'])){ + + foreach (array_keys($result) as $attributeName) { + $resultArray[$attributeName] = $result[$attributeName]; + } + + array_push($searchArray, $resultArray); + }else{ + foreach ($result as $row) { + $resultArray = array(); + foreach (array_keys($row) as $attributeName) { + $resultArray[$attributeName] = $row[$attributeName]; + } + array_push($searchArray, $resultArray); + } + } + + return $searchArray; + } + + + + //returns array of Expressions + public function getAllDocumentsForExpressionDisplay(){ + + $query="SELECT distinct D.documentID, D.shortName documentName + FROM Document D, Expression E + WHERE E.documentID = D.documentID + AND licenseID = '" . $this->licenseID . "' AND (D.expirationDate is null or D.expirationDate ='0000-00-00') + ORDER BY documentID;"; + + $result = $this->db->processQuery($query, 'assoc'); + + $objects = array(); + + //need to do this since it could be that there's only one request and this is how the dbservice returns result + if (isset($result['documentID'])){ + $object = new Document(new NamedArguments(array('primaryKey' => $result['documentID']))); + array_push($objects, $object); + }else{ + foreach ($result as $row) { + $object = new Document(new NamedArguments(array('primaryKey' => $row['documentID']))); + array_push($objects, $object); + } + } + + return $objects; + } + + + //search used for the autocomplete + public function searchOrganizations($q){ + $config = new Configuration; + + $q = str_replace("+", " ",$q); + $q = str_replace("%", "&",$q); + + $orgArray = array(); + + //if the org module is installed get the org names from org database + if ($config->settings->organizationsModule == 'Y'){ + + $dbName = $config->settings->organizationsDatabaseName; + + + $query = "SELECT CONCAT(A.name, ' (', O.name, ')') name, O.organizationID + FROM " . $dbName . ".Alias A, " . $dbName . ".Organization O + WHERE A.organizationID=O.organizationID + AND upper(A.name) like upper('%" . $q . "%') + UNION + SELECT name, organizationID + FROM " . $dbName . ".Organization + WHERE upper(name) like upper('%" . $q . "%') + ORDER BY 1;"; + + $result = mysqli_query($this->db->getDatabase(), $query); + + while ($row = mysqli_fetch_assoc($result)){ + $orgArray[] = $row['organizationID'] . "|" . $row['name']; + } + + + //otherwise get the orgs from this database + }else{ + $query = "SELECT shortName, organizationID + FROM Organization + WHERE upper(shortName) like upper('%" . $q . "%') + ORDER BY 1;"; + + $result = mysqli_query($this->db->getDatabase(), $query); + + while ($row = mysqli_fetch_assoc($result)){ + $orgArray[] = $row['organizationID'] . "|" . $row['shortName']; + } + + + } + + + return $orgArray; + } + + + + + //search used index page drop down + public function getOrganizationList(){ + $config = new Configuration; + + $orgArray = array(); + + //if the org module is installed get the org names from org database + if ($config->settings->organizationsModule == 'Y'){ + $dbName = $config->settings->organizationsDatabaseName; + $query = "SELECT name, organizationID FROM " . $dbName . ".Organization ORDER BY 1;"; + + //otherwise get the orgs from this database + }else{ + $query = "SELECT shortName name, organizationID FROM Organization ORDER BY 1;"; + } + + + $result = $this->db->processQuery($query, 'assoc'); + + $resultArray = array(); + + //need to do this since it could be that there's only one result and this is how the dbservice returns result + if (isset($result['organizationID'])){ + + foreach (array_keys($result) as $attributeName) { + $resultArray[$attributeName] = $result[$attributeName]; + } + + array_push($orgArray, $resultArray); + }else{ + foreach ($result as $row) { + $resultArray = array(); + foreach (array_keys($row) as $attributeName) { + $resultArray[$attributeName] = $row[$attributeName]; + } + array_push($orgArray, $resultArray); + } + } + + return $orgArray; + + } + + + + //go to organizations and get the org name for this license + public function getOrganizationName(){ + $config = new Configuration; + + //if the org module is installed get the org name from org database + if ($config->settings->organizationsModule == 'Y'){ + $dbName = $config->settings->organizationsDatabaseName; + + $orgArray = array(); + $query = "SELECT name FROM " . $dbName . ".Organization WHERE organizationID = " . $this->organizationID; + + if ($result = mysqli_query($this->db->getDatabase(), $query)){ + + while ($row = mysqli_fetch_assoc($result)){ + return $row['name']; + } + } + //otherwise if the org module is not installed get the org name from this database + }else{ + $organization = new Organization(new NamedArguments(array('primaryKey' => $this->organizationID))); + return $organization->shortName; + } + } + + + + //insert the organization / provider if it doesn't already exist + public function setOrganization($orgID, $orgName){ + $config = new Configuration; + + //if the org module is installed get the org name from org database + if ($config->settings->organizationsModule == 'Y'){ + //if no org ID was passed in then we need to create a new organization shell + if (!$orgID){ + + $dbName = $config->settings->organizationsDatabaseName; + $orgName = str_replace("'", "''",$orgName); + + $query = "INSERT INTO " . $dbName . ".Organization (name, createDate, createLoginID) VALUES ('" . $orgName . "', NOW(), '" . $_SESSION['loginID'] . "')"; + + $this->organizationID = $this->db->processQuery($query); + + }else{ + $this->organizationID = $orgID; + } + + //otherwise if the org module is not installed get the org name from this database + }else{ + + //if no org ID was passed in then we need to create a new provider + if (!$orgID){ + $organization = new Organization(); + $organization->organizationID = ''; + $organization->shortName = $orgName; + $organization->save(); + + $this->organizationID = $organization->primaryKey; + }else{ + $this->organizationID = $orgID; + } + } + } + + + + + + //search used index page drop down + public function getConsortiumList(){ + $config = new Configuration; + + $consortiumArray = array(); + + //if the org module is installed get the consortia names from org database + if ($config->settings->organizationsModule == 'Y'){ + $dbName = $config->settings->organizationsDatabaseName; + $query = "SELECT name, O.organizationID consortiumID + FROM " . $dbName . ".Organization O, + " . $dbName . ".OrganizationRoleProfile ORP, + " . $dbName . ".OrganizationRole + WHERE OrganizationRole.organizationRoleID = ORP.organizationRoleID + AND ORP.organizationID = O.organizationID + AND UPPER(OrganizationRole.shortName) LIKE 'CONSORT%' + ORDER BY 1;"; + + //otherwise get the consortium from this database + }else{ + $query = "SELECT shortName name, consortiumID FROM Consortium ORDER BY 1;"; + } + + + $result = $this->db->processQuery($query, 'assoc'); + + $resultArray = array(); + + //need to do this since it could be that there's only one result and this is how the dbservice returns result + if (isset($result['consortiumID'])){ + + foreach (array_keys($result) as $attributeName) { + $resultArray[$attributeName] = $result[$attributeName]; + } + + array_push($consortiumArray, $resultArray); + }else{ + foreach ($result as $row) { + $resultArray = array(); + foreach (array_keys($row) as $attributeName) { + $resultArray[$attributeName] = $row[$attributeName]; + } + array_push($consortiumArray, $resultArray); + } + } + + return $consortiumArray; + + } + + + + //go to organizations and get the consortia name for this license + public function getConsortiumName(){ + $config = new Configuration; + + //if the org module is installed get the org name from org database + if ($config->settings->organizationsModule == 'Y'){ + $dbName = $config->settings->organizationsDatabaseName; + + $orgArray = array(); + $query = "SELECT name FROM " . $dbName . ".Organization WHERE organizationID = " . $this->consortiumID; + $result = mysqli_query($this->db->getDatabase(), $query); + + while ($row = mysqli_fetch_assoc($result)){ + return $row['name']; + } + //otherwise if the org module is not installed get the consortium name from this database + }else{ + $consortium = new Consortium(new NamedArguments(array('primaryKey' => $this->consortiumID))); + return $consortium->shortName; + } + } + + + + //used for A-Z on search (index) + public function getAlphabeticalList(){ + $alphArray = array(); + $result = mysqli_query($this->db->getDatabase(), "SELECT DISTINCT UPPER(SUBSTR(TRIM(LEADING 'The ' FROM shortName),1,1)) letter, COUNT(SUBSTR(TRIM(LEADING 'The ' FROM shortName),1,1)) letter_count + FROM License L + GROUP BY SUBSTR(TRIM(LEADING 'The ' FROM shortName),1,1) + ORDER BY 1;"); + + while ($row = mysqli_fetch_assoc($result)){ + $alphArray[$row['letter']] = $row['letter_count']; + } + + return $alphArray; + } + + +} + +?> diff --git a/ajax_forms.php b/ajax_forms.php index 3fae805..ab179c0 100644 --- a/ajax_forms.php +++ b/ajax_forms.php @@ -31,7 +31,7 @@ switch ($_GET['action']) { //form to edit license record - case 'getLicenseForm': + case 'getLicenseForm': if (isset($_GET['licenseID'])) $licenseID = $_GET['licenseID']; else $licenseID = ''; $license = new License(new NamedArguments(array('primaryKey' => $licenseID))); @@ -44,16 +44,16 @@ - + - + - - - - + +
License




+

@@ -63,7 +63,7 @@

+

There was an error processing this request - please verify configuration.ini is set up for organizations correctly and the database and tables have been created."; + echo ""._("There was an error processing this request - please verify configuration.ini is set up for organizations correctly and the database and tables have been created.").""; } ?> @@ -103,15 +103,15 @@ if (($config->settings->organizationsModule == 'N') || (!$config->settings->organizationsModule)){ ?>
- add consortium +
@@ -124,13 +124,13 @@ '> - + - + - + @@ -200,7 +200,7 @@ - + - + - + - + @@ -268,7 +268,7 @@ - +
Document Upload








- add document type +


" . $document->documentURL . "
replace with new file"; + echo "
" . $document->documentURL . "
"._("replace with new file").""; echo "
"; //if adding @@ -260,7 +260,7 @@ parentDocumentID == "0") || ($document->parentDocumentID == "")){ ?>
/>
                                                               
@@ -277,7 +277,7 @@ - + - +
Archive Document Date



- Archive Date: +


Continue


@@ -311,13 +311,13 @@
Terms Tool Resource Link




+

-
+
@@ -377,13 +377,13 @@ - +
Signatures

- - - + + + @@ -440,7 +440,7 @@ echo ""; echo ""; - echo ""; + echo ""; echo ""; echo ""; @@ -453,8 +453,8 @@ echo ""; echo ""; }else{ - echo ""; - echo ""; + echo ""; + echo ""; } } @@ -476,7 +476,7 @@ } echo ""; - echo ""; + echo ""; echo ""; echo ""; } @@ -486,7 +486,7 @@
Signer NameDateType    
commit update"._("commit update")."   editremove"._("edit").""._("remove")."add"._("add")." 


Close


@@ -495,11 +495,11 @@
Expressions




+


+

   - add expression type + type

+

@@ -631,12 +631,12 @@ - + - - + +


@@ -645,11 +645,11 @@ '> - @@ -680,7 +680,7 @@
Notes
- For Document Text:
+

+


- + @@ -701,7 +701,7 @@ echo ""; echo ""; - echo ""; + echo ""; echo ""; echo ""; echo ""; @@ -723,8 +723,8 @@ echo ""; } echo ""; - echo ""; - echo ""; + echo ""; + echo ""; } } @@ -739,7 +739,7 @@ echo ""; echo ""; echo ""; - echo ""; + echo ""; echo ""; echo ""; } @@ -749,7 +749,7 @@
  Notes    
 commit update"._("commit update")."  " . nl2br($expressionNote->note) . "editremove"._("edit").""._("remove")."
 add"._("add")." 


; return false' id='closeButton'>Close


; return false'>
'> @@ -759,12 +759,12 @@ '> - + - - + - - - + +
Attachments




+



+
getAttachmentFiles() as $attachmentFile){ - echo "
" . $attachmentFile->attachmentURL . " remove
"; + echo "
" . $attachmentFile->attachmentURL . " "._("remove")."
"; } echo "

"; @@ -827,8 +827,8 @@
@@ -841,7 +841,7 @@ - + - - - - - + + +
Update



+ shortName . "' style='width:190px;'/>update"; + echo ""._("update").""; ?>

close

@@ -882,9 +881,9 @@ if(e.keyCode == 13) { updateData("", ""); } - }); + }); - + $loginID))); }else{ - $update='Add New'; + $update=_('Add New'); } $util = new Utility(); @@ -909,17 +908,17 @@ ?>
- - - - - + + + + + + @@ -962,7 +961,7 @@ - +
User



- +
"._("Admin users have access to the Admin page and the SFX tab.")."

"._("Restricted users do not have the ability to view documents")."

"._("View only users can view all license information, including the license pdf");?>" href="">
- +
@@ -948,10 +947,10 @@ //if not configured to use SFX, hide the Terms Tool Report if ($util->useTermsTool()) { ?> -
- +
"._("Leave this field blank if the user shouldn't receive emails.");?>" href="">
                       " onclick="window.parent.tb_remove(); return false" id='update-user-cancel'>
@@ -981,10 +980,10 @@ if (isset($_GET['expressionTypeID'])) $expressionTypeID = $_GET['expressionTypeID']; else $expressionTypeID = ''; if ($expressionTypeID){ - $update='Update'; + $update=_('Update'); $expressionType = new ExpressionType(new NamedArguments(array('primaryKey' => $expressionTypeID))); }else{ - $update='Add New'; + $update=_('Add New'); } @@ -992,23 +991,23 @@
- - - + + + - + - +
Expression Type



* Note type of display allows for terms tool use
*
@@ -1023,7 +1022,7 @@ if (isset($_GET['calendarSettingsID'])) $calendarSettingsID = $_GET['calendarSettingsID']; else $calendarSettingsID = ''; if ($calendarSettingsID){ - $update='Edit'; + $update=_('Edit'); $calendarSettings = new CalendarSettings(new NamedArguments(array('primaryKey' => $calendarSettingsID))); } @@ -1032,15 +1031,15 @@
- + - shortName) == strtolower('Resource Type(s)')) { ?> - + - + + - shortName) == strtolower('Authorized Site(s)')) { ?> - + - + + - - - + + - @@ -1116,7 +1115,7 @@ - +
Calendar Settings



shortName; ?>
shortName; ?>
@@ -1055,59 +1054,59 @@ echo ""; }else{ echo ""; - } + } } ?> -
shortName; ?>
shortName; ?>
-
shortName; ?>
shortName; ?>
@@ -1132,10 +1131,10 @@ if (isset($_GET['qualifierID'])) $qualifierID = $_GET['qualifierID']; else $qualifierID = ''; if ($qualifierID){ - $update='Update'; + $update=_('Update'); $qualifier = new Qualifier(new NamedArguments(array('primaryKey' => $qualifierID))); }else{ - $update='Add New'; + $update=_('Add New'); } @@ -1143,9 +1142,9 @@
- + - + - + - +
Qualifier



@@ -1183,9 +1182,9 @@ if(e.keyCode == 13) { submitQualifier(); } - }); + }); - + canEdit()){?> - Edit License | Remove License + | "; @@ -58,7 +58,7 @@ if ($config->settings->organizationsModule == 'Y'){ $util = new Utility(); - echo $license->getOrganizationName() . " Edit Organization"; + echo $license->getOrganizationName() . " "._("edit organization").""; if ($license->consortiumID) { echo "
" . $license->getConsortiumName(); @@ -75,7 +75,7 @@
canEdit()){ ?> - License Status:
+
- - + + @@ -138,8 +138,8 @@ echo ""; echo ""; echo ""; - echo ""; - echo ""; + echo ""; + echo ""; echo ""; } @@ -152,11 +152,11 @@ canEdit()){ - echo "

add new terms tool resource link"; + echo "

"._("add new terms tool resource link").""; } break; @@ -179,8 +179,8 @@
For DocumentResource    
" . $document->shortName . "" . $sfxProvider->shortName . "editremove"._("edit").""._("remove")."
- - + + canEdit()){ ?> @@ -203,12 +203,12 @@ echo ""; @@ -220,18 +220,18 @@ if (count($attachmentFileArray) == 0){ - echo "(none uploaded)
"; + echo _("(none uploaded)")."
"; } $i=1; foreach($attachmentFileArray as $attachmentFile) { - echo "view attachment " . $i . "
"; + echo ""._("view attachment ") . $i . "
"; $i++; } echo ""; if ($user->canEdit()){ - echo ""; + echo ""; } echo ""; @@ -242,11 +242,11 @@
DateDetails    
" . substr($attachmentText, 0,200); if (strlen($attachmentText) > 200){ - echo "...  more..."; + echo "...  "._("more...").""; } echo "
"; echo ""; echo "
edit  remove"._("edit")."  "._("remove")."
canEdit()){ - echo "

add new attachment"; + echo "

"._("add new attachment").""; } break; @@ -319,14 +319,14 @@ $licenseArray = $licenseObj->search($whereAdd, $orderBy, $limit); $pagination = ''; if ($totalRecords == 0){ - echo "

Sorry, no licenses fit your query"; + echo "

"._("Sorry, no licenses fit your query").""; $i=0; }else{ //maximum number of pages to display on screen at one time $maxDisplay = 25; $thisPageNum = count($licenseArray) + $pageStart - 1; - echo "Displaying " . $pageStart . " to " . $thisPageNum . " of " . $totalRecords . " License Records
"; + echo ""._("Displaying ") . $pageStart . _(" to ") . $thisPageNum . _(" of ") . $totalRecords . _(" License Records")."
"; //print out page selectors if ($totalRecords > $numberOfRecords){ @@ -380,10 +380,10 @@ ?> - - - - + + + + - records per page +
Name 
Publisher / Provider 
Consortium 
Status 
 
 
 
 
@@ -460,10 +460,10 @@ ?> - - - - + + + + There was an error processing this request - please verify configuration.ini is set up for organizations correctly and the database and tables have been created."; + echo ""._("There was an error processing this request - please verify configuration.ini is set up for organizations correctly and the database and tables have been created.").""; } break; @@ -532,19 +532,19 @@ if ($user->canEdit()){ - echo "\n
NamePublisher / ProviderConsortiumStatus
view / edit license  view / edit " . strtolower($expressionType->noteType) . " notes  view document
"; + echo "\n
"._("view / edit license")."  "._("view / edit ") . strtolower($expressionType->noteType) . _(" notes")."  "._("view document")."
"; }else{ - echo "\n
View License  View Document
"; + echo "\n"._("view license")."  "._("view document").""; } echo "
"; if ($expressionTypeArray['documentText']){ - echo "Document Text:

" . nl2br($expressionTypeArray['documentText']) . "
"; + echo ""._("Document Text:")."

" . nl2br($expressionTypeArray['documentText']) . "
"; } - $expr_notes = "
" . ucfirst($expressionTypeArray['noteType']) . " Notes: "; + $expr_notes = "
" . ucfirst($expressionTypeArray['noteType']) . _(" Notes:")." "; $expression = new Expression(new NamedArguments(array('primaryKey' => $expressionTypeArray['expressionID']))); $expressionNotes = $expression->getExpressionNotes(); @@ -570,7 +570,7 @@ if ($expressionTypeArray['qualifiers']){ - echo "
Qualifiers:
" . $expressionTypeArray['qualifiers']; + echo "
"._("Qualifiers:")."
" . $expressionTypeArray['qualifiers']; } echo "
"; @@ -627,21 +627,21 @@ ?> - License - noteType); ?> Notes - Document Text + + noteType); ?> + " . $expressionTypeArray['document'] . " View License"; + echo "\n" . $expressionTypeArray['document'] . " "._("view license").""; if ($expressionTypeArray['documentText']){ $documentText = $expressionTypeArray['documentText']; }else{ - $documentText = "(document text not entered)"; + $documentText = _("(document text not entered)"); } echo "\n"; @@ -649,7 +649,7 @@ echo ""; - $expr_notes = ucfirst($expressionTypeArray['noteType']) . " Notes:
    "; + $expr_notes = ucfirst($expressionTypeArray['noteType']) . _(" Notes:")."
      "; $expression = new Expression(new NamedArguments(array('primaryKey' => $expressionTypeArray['expressionID']))); $expressionNotes = $expression->getExpressionNotes(); @@ -672,12 +672,12 @@ echo "
      " . substr($documentText, 0,200); if (strlen($documentText) > 200){ - echo "...  more..."; + echo "...  "._("more...").""; } echo "
      "; echo ""; @@ -689,7 +689,7 @@ #end numrows if }else{ - echo "(none for " . $expressionTypeArray['shortName'] . ")"; + echo ""._("(none for ") . $expressionTypeArray['shortName'] . ")"; } echo ""; @@ -739,7 +739,7 @@ }else if ($displayArchiveInd == '1'){ $documentArray = $license->getArchivedDocumentsWithoutParents($parentArchivedOrderBy); if (count($documentArray) > 0){ - echo "Archived Documents hide archives"; + echo ""._("Archived Documents")." "._("hide archives").""; } $chJSFunction = "setChildArchivedOrder"; @@ -767,15 +767,15 @@ -
      Name.png' border=0> .png' border=0>
      -
      Type.png' border=0> .png' border=0>
      -
      Effective Date.png' border=0> .png' border=0>
      -
      Signatures.png' border=0> .png' border=0>
      +
      .png' border=0> .png' border=0>
      +
      .png' border=0> .png' border=0>
      +
      .png' border=0> .png' border=0>
      +
      .png' border=0> .png' border=0>
      -
      Name.png' border=0> .png' border=0>
      -
      Type.png' border=0> .png' border=0>
      -
      Effective Date.png' border=0> .png' border=0>
      -
      Signatures.png' border=0> .png' border=0>
      +
      .png' border=0> .png' border=0>
      +
      .png' border=0> .png' border=0>
      +
      .png' border=0> .png' border=0>
      +
      .png' border=0> .png' border=0>
      @@ -810,7 +810,7 @@ } if (($document->expirationDate != "0000-00-00") && ($document->expirationDate != "")){ - $displayExpirationDate = 'archived on: ' . format_date($document->expirationDate); + $displayExpirationDate = _("archived on: ") . format_date($document->expirationDate); }else{ $displayExpirationDate = ''; } @@ -833,7 +833,7 @@ if (($signature['signatureDate'] != '') && ($signature['signatureDate'] != "0000-00-00")) { $signatureDate = format_date($signature['signatureDate']); }else{ - $signatureDate='(no date)'; + $signatureDate=_("(no date)"); } echo ""; @@ -844,14 +844,14 @@ } echo ""; if ($user->canEdit()){ - echo "add/view details"; + echo ""._("add/view details").""; } }else{ - echo "(none found)
      "; + echo _("(none found)")."
      "; if ($user->canEdit()){ - echo "add signatures"; + echo ""._("add signatures").""; } } @@ -860,20 +860,20 @@ echo ""; if (!$user->isRestricted()) { if ($document->documentURL != ""){ - echo "view document
      "; + echo ""._("view document")."
      "; }else{ - echo "(none uploaded)
      "; + echo _("(none uploaded)")."
      "; } } if (count($document->getExpressions) > 0){ - echo "view expressions"; + echo ""._("view expressions").""; } echo ""; if ($user->canEdit()){ - echo "edit document
      remove document"; + echo ""._("edit document")."
      "._("remove document").""; echo "
      " . $displayExpirationDate . ""; } echo ""; @@ -883,29 +883,29 @@ //if display for this child is turned off if ((($showChildrenDocumentID) && ($showChildrenDocumentID != $document->documentID)) || !($showChildrenDocumentID)) { if ($displayArchiveInd == '1') { - echo "This document has " . $numberOfChildren . " children document(s) not displayed. show all documents for this parent"; + echo ""._("This document has ") . $numberOfChildren . _(" children document(s) not displayed.")." "._("show all documents for this parent").""; }else{ - echo "This document has " . $numberOfChildren . " children document(s) not displayed. show all documents for this parent"; + echo ""._("This document has ") . $numberOfChildren . _(" children document(s) not displayed.")." "._("show all documents for this parent").""; } }else{ if ($displayArchiveInd == '1') { - echo "The following " . $numberOfChildren . " document(s) belong to " . $document->shortName . ". hide children documents for this parent"; + echo ""._("The following ") . $numberOfChildren . _(" document(s) belong to ") . $document->shortName . ". "._("hide children documents for this parent").""; }else{ - echo "The following " . $numberOfChildren . " document(s) belong to " . $document->shortName . ". hide children documents for this parent"; + echo ""._("The following ") . $numberOfChildren . _(" document(s) belong to ") . $document->shortName . ". "._("hide children documents for this parent").""; } ?> -
      Name.gif' border=0> .gif' border=0>
      -
      Type.gif' border=0> .gif' border=0>
      -
      Effective Date.gif' border=0> .gif' border=0>
      -
      Signatures.gif' border=0> .gif' border=0>
      +
      .gif' border=0> .gif' border=0>
      +
      .gif' border=0> .gif' border=0>
      +
      .gif' border=0> .gif' border=0>
      +
      .gif' border=0> .gif' border=0>
      -
      Name.gif' border=0> .gif' border=0>
      -
      Type.gif' border=0> .gif' border=0>
      -
      Effective Date.gif' border=0> .gif' border=0>
      -
      Signatures.gif' border=0> .gif' border=0>
      +
      .gif' border=0> .gif' border=0>
      +
      .gif' border=0> .gif' border=0>
      +
      .gif' border=0> .gif' border=0>
      +
      .gif' border=0> .gif' border=0>
        canEdit()){ ?> @@ -928,9 +928,9 @@ } if ((($childDocument->expirationDate == "0000-00-00") || ($childDocument->expirationDate == "")) && ($user->canEdit())){ - $displayExpirationDate = "archive document"; + $displayExpirationDate = ""._("archive document").""; }else{ - $displayExpirationDate = 'archived on: ' . format_date($childDocument->expirationDate); + $displayExpirationDate = _("archived on: ") . format_date($childDocument->expirationDate); } @@ -951,7 +951,7 @@ if (($signature['signatureDate'] != '') && ($signature['signatureDate'] != "0000-00-00")) { $signatureDate = format_date($signature['signatureDate']); }else{ - $signatureDate='(no date)'; + $signatureDate=_("(no date)"); } echo ""; @@ -962,14 +962,14 @@ } echo ""; if ($user->canEdit()){ - echo "add/view details"; + echo ""._("add/view details").""; } }else{ - echo "(none found)
      "; + echo _("(none found)")."
      "; if ($user->canEdit()){ - echo "add signatures"; + echo ""._("add signatures").""; } } @@ -978,19 +978,19 @@ echo ""; if (!$user->isRestricted) { if ($childDocument->documentURL != ""){ - echo "view document
      "; + echo ""._("view document")."
      "; }else{ - echo "(none uploaded)
      "; + echo _("(none uploaded)")."
      "; } } if (count($childDocument->getExpressions) > 0){ - echo "view expressions"; + echo ""._("view expressions").""; } echo ""; if ($user->canEdit()){ - echo "edit document
      remove document"; + echo ""._("edit document")."
      "._("remove document").""; //echo "
      " . $displayExpirationDate . ""; } echo ""; @@ -999,9 +999,9 @@ if ($numberOfChildren > 0){ if ($displayArchiveInd == '1') { - echo "The following " . $numberOfChildren . " document(s) belong to " . $childDocument->shortName . "."; + echo ""._("The following ") . $numberOfChildren . _(" document(s) belong to ") . $childDocument->shortName . "."; }else{ - echo "The following " . $numberOfChildren . " document(s) belong to " . $childDocument->shortName . "."; + echo ""._("The following ") . $numberOfChildren . _(" document(s) belong to ") . $childDocument->shortName . "."; } } @@ -1024,17 +1024,17 @@ " . $numRows . " archive(s) available. show archives

      "; + echo "" . $numRows . _(" archive(s) available.")." "._("show archives")."

      "; } } if (($user->canEdit()) && ($displayArchiveInd != "")){ - echo "upload new document"; + echo ""._("upload new document").""; } @@ -1076,14 +1076,14 @@ ?> - For Document: shortName; ?> + shortName; ?> - - + + canEdit()){ ?> - + @@ -1122,7 +1122,7 @@ } }else{ if ($expressionIns['productionUseInd'] == "1"){ - echo "

      used in terms tool"; + echo "

      "._("used in terms tool").""; } } @@ -1147,14 +1147,14 @@ echo ""; - echo ""; + echo ""; } echo ""; if ($user->canEdit()){ - echo ""; echo ""; @@ -1193,11 +1193,11 @@ } }else{ - echo "(none found)"; + echo _("(none found)"); } if ($user->canEdit()){ - echo "

      add new expression"; + echo "

      "._("add new expression").""; } @@ -1226,8 +1226,8 @@ foreach($resultArray as $result){ echo ""; echo ""; - echo ""; - echo ""; + echo ""; + echo ""; echo ""; } @@ -1236,7 +1236,7 @@
      TypeDocument Text Qualifier  
      edit  remove"._("edit")."  "._("remove")."
       " . ucfirst($expressionIns['noteType']) . " Notes:
        "; + echo "
       " . ucfirst($expressionIns['noteType']) . _(" Notes:")."
        "; }else{ - echo "
       " . ucfirst($expressionIns['noteType']) . " Notes:
        "; + echo "
       " . ucfirst($expressionIns['noteType']) . _(" Notes:")."
        "; } $expressionNoteArray = $expression->getExpressionNotes(); @@ -1167,13 +1167,13 @@ $rowcount++; } - if ($rowcount == "0"){ echo "(none)"; } + if ($rowcount == "0"){ echo _("(none)"); } echo "
      "; //link to view/edit display notes if ($user->canEdit()){ - echo "add/view " . lcfirst($expressionIns['noteType']) . " notes"; + echo ""._("add/view ") . lcfirst($expressionIns['noteType']) . _(" notes").""; } echo "
      " . $result['shortName'] . "editremove"._("edit").""._("remove")."
      - - - - + + + useTermsTool()){ - echo ""; + echo ""; } ?> @@ -1283,8 +1283,8 @@ if ($util->useTermsTool()){ echo ""; } - echo ""; - echo ""; + echo ""; + echo ""; echo ""; } @@ -1293,7 +1293,7 @@
      Login IDFirst NameLast NamePrivilege + Terms Tool Update Email"._("Terms Tool Update Email")." " . $instance['emailAddressForTermsTool'] . "updateremove"._("update").""._("remove")."
      - - + + "; echo ""; echo ""; - echo ""; - echo ""; + echo ""; + echo ""; echo ""; } @@ -1341,7 +1341,7 @@
      Expression TypeNote Type     " . $instance['shortName'] . "" . $instance['noteType'] . "updateremove"._("update").""._("remove")."
      - - + + "; - echo ""; + echo ""; echo ""; } @@ -1418,7 +1418,7 @@
      SettingValue   edit"._("edit")."
      - - + + "; echo ""; echo ""; - echo ""; - echo ""; + echo ""; + echo ""; echo ""; $i++; } @@ -1485,10 +1485,10 @@ $qualifierArray = $expressionType->getQualifiers(); if (count($qualifierArray) > 0 ) { - if (!isset($_GET['page'])) echo "Limit by Qualifier:"; + if (!isset($_GET['page'])) echo ""._("Limit by Qualifier:").""; ?> - +
      For Expression TypeQualifier     " . $displayET . "" . $qualifier->shortName . "updateremove"._("update").""._("remove")."


      Continue

      @@ -511,10 +511,10 @@ ?> - + - +

      SQL Insert Failed. getMessage(); ?> Please make sure everything is filled out correctly.

      getMessage(); ?>

      Continue

      @@ -524,21 +524,21 @@ ?> - + - +

      SQL Insert Failed. getMessage(); ?> Please make sure everything is filled out correctly.

      getMessage(); ?>

      Continue

      "; - break; + break; - case 'addProvider': + case 'addProvider': if ((isset($_GET['shortName'])) && ($_GET['shortName'] != '')){ $provider = new Provider(); $provider->providerID=''; @@ -601,10 +601,10 @@ echo ""; - break; + break; //new doc type being added directly on document form - returns updated drop down list - case 'addDocumentType': + case 'addDocumentType': if ((isset($_POST['shortName'])) && ($_POST['shortName'] != '')){ $documentType = new DocumentType(); @@ -635,13 +635,13 @@ echo ""; - break; + break; //new signature type being added directly on signature form - returns updated drop down list //no longer used.... must add signature types from admin form - case 'addSignatureType': + case 'addSignatureType': if ((isset($_POST['shortName'])) && ($_POST['shortName'] != '')){ $signatureType = new SignatureType(); @@ -673,12 +673,12 @@ echo ""; - break; + break; //new expression type being added directly on expression form - returns updated drop down list //note default type is 'internal'. this will need to be updated by user in admin if it's decided to be used for display - case 'addExpressionType': + case 'addExpressionType': if ((isset($_POST['shortName'])) && ($_POST['shortName'] != '')){ @@ -712,15 +712,15 @@ echo ""; - break; + break; //generically adds data for admin screen //error is echoed back - case 'addData': + case 'addData': - $className = $_POST['tableName']; - $shortName = $_POST['shortName']; + $className = $_POST['tableName']; + $shortName = $_POST['shortName']; $instance = new $className(); $instance->shortName = $shortName; @@ -733,14 +733,14 @@ } echo ""; - break; + break; //generically updates data for admin screen //error is echoed back - case 'updateData': - $className = $_POST['tableName']; - $updateID = $_POST['updateID']; - $shortName = $_POST['shortName']; + case 'updateData': + $className = $_POST['tableName']; + $updateID = $_POST['updateID']; + $shortName = $_POST['shortName']; $instance = new $className(new NamedArguments(array('primaryKey' => $updateID))); $instance->shortName = $shortName; @@ -751,15 +751,15 @@ echo $e->POSTMessage(); } - break; + break; //generically deletes data for admin screen //error is echoed back - case 'deleteData': + case 'deleteData': - $className = $_GET['tableName']; - $deleteID = $_GET['deleteID']; + $className = $_GET['tableName']; + $deleteID = $_GET['deleteID']; //since we're using MyISAM which doesn't support FKs, must verify that there are no records of children or they could disappear $instance = new $className(new NamedArguments(array('primaryKey' => $deleteID))); @@ -769,27 +769,27 @@ if ($numberOfChildren > 0){ //print out a friendly message... - echo "Unable to delete - this " . strtolower(preg_replace("/[A-Z]/", " \\0" , lcfirst($className))) . " is in use. Please make sure no licenses are set up with this information."; + echo _("Unable to delete - this ") . strtolower(preg_replace("/[A-Z]/", " \\0" , lcfirst($className))) . _(" is in use. Please make sure no licenses are set up with this information."); }else{ try { $instance->delete(); } catch (Exception $e) { //print out a friendly message... - echo "Unable to delete. Please make sure no licenses are set up with this information."; + echo _("Unable to delete. Please make sure no licenses are set up with this information."); } } echo ""; - break; + break; - case 'submitExpressionType': + case 'submitExpressionType': if ((isset($_POST['expressionTypeID'])) && ($_POST['expressionTypeID'] != '')){ - $expressionType = new ExpressionType(new NamedArguments(array('primaryKey' => $_POST['expressionTypeID']))); + $expressionType = new ExpressionType(new NamedArguments(array('primaryKey' => $_POST['expressionTypeID']))); }else{ - $expressionType = new ExpressionType(); - $expressionType->expressionTypeID = ''; + $expressionType = new ExpressionType(); + $expressionType->expressionTypeID = ''; } $expressionType->shortName = $_POST['shortName']; @@ -801,15 +801,15 @@ echo $e->POSTMessage(); } - break; + break; - case 'submitCalendarSettings': + case 'submitCalendarSettings': if ((isset($_POST['calendarSettingsID'])) && ($_POST['calendarSettingsID'] != '')){ - $calendarSettings = new CalendarSettings(new NamedArguments(array('primaryKey' => $_POST['calendarSettingsID']))); + $calendarSettings = new CalendarSettings(new NamedArguments(array('primaryKey' => $_POST['calendarSettingsID']))); }else{ - $calendarSettings = new CalendarSettings(); - $calendarSettings->calendarSettingsID = ''; + $calendarSettings = new CalendarSettings(); + $calendarSettings->calendarSettingsID = ''; } if (is_array($_POST['value'])) { @@ -824,14 +824,14 @@ echo $e->POSTMessage(); } - break; + break; - case 'submitQualifier': + case 'submitQualifier': if ((isset($_POST['qualifierID'])) && ($_POST['qualifierID'] != '')){ - $qualifier = new Qualifier(new NamedArguments(array('primaryKey' => $_POST['qualifierID']))); + $qualifier = new Qualifier(new NamedArguments(array('primaryKey' => $_POST['qualifierID']))); }else{ - $qualifier = new Qualifier(); - $qualifier->qualifierID = ''; + $qualifier = new Qualifier(); + $qualifier->qualifierID = ''; } $qualifier->expressionTypeID = $_POST['expressionTypeID']; @@ -843,13 +843,13 @@ echo $e->POSTMessage(); } - break; + break; - case 'submitUserData': + case 'submitUserData': if ($_POST['orgLoginID']){ - $user = new User(new NamedArguments(array('primaryKey' => $_POST['orgLoginID']))); + $user = new User(new NamedArguments(array('primaryKey' => $_POST['orgLoginID']))); }else{ - $user = new User(); + $user = new User(); } $user->loginID = $_POST['loginID']; @@ -865,13 +865,13 @@ } - break; + break; - case 'deleteUser': + case 'deleteUser': - $loginID = $_GET['loginID']; + $loginID = $_GET['loginID']; $user = new User(new NamedArguments(array('primaryKey' => $loginID))); @@ -883,14 +883,14 @@ } echo ""; - break; + break; - case 'deleteExpressionType': + case 'deleteExpressionType': - $expressionTypeID = $_GET['expressionTypeID']; + $expressionTypeID = $_GET['expressionTypeID']; $expressionType = new ExpressionType(new NamedArguments(array('primaryKey' => $expressionTypeID))); @@ -902,22 +902,22 @@ } echo ""; - break; + break; //verify file name for uploaded attachments (4th tab) aren't already being used - case 'checkUploadAttachment': + case 'checkUploadAttachment': $uploadAttachment = $_POST['uploadAttachment']; $attachmentFile = new AttachmentFile(); $exists = 0; - if (!is_writable("attachments")) { - echo 3; - break; - } + if (!is_writable("attachments")) { + echo 3; + break; + } foreach ($attachmentFile->allAsArray() as $attachmentTestArray) { if (strtoupper($attachmentTestArray['attachmentURL']) == strtoupper($uploadAttachment)) { @@ -930,7 +930,7 @@ break; //perform actual upload for attachments (4th tab) - case 'uploadAttachment': + case 'uploadAttachment': $documentName = basename($_FILES['myfile']['name']); @@ -954,10 +954,10 @@ //set to web rwx, everyone else rw //this way we can edit the document directly on the server chmod ($target_path, 0766); - echo "success uploading!"; + echo _("success uploading!"); }else{ header('HTTP/1.1 500 Internal Server Error'); - echo "
      There was a problem saving your file to $target_path.
      "; + echo "
      "._("There was a problem saving your file to")." $target_path.
      "; } } @@ -965,21 +965,21 @@ break; //add/update for attachment - 4th tab - case 'submitAttachment': + case 'submitAttachment': - //if attachmentID is sent then this is an update - if ((isset($_POST['attachmentID'])) && ($_POST['attachmentID'] <> "")){ - $attachment = new Attachment(new NamedArguments(array('primaryKey' => $_POST['attachmentID']))); - }else{ - $attachment = new Attachment(); - $attachment->attachmentID = ''; + //if attachmentID is sent then this is an update + if ((isset($_POST['attachmentID'])) && ($_POST['attachmentID'] <> "")){ + $attachment = new Attachment(new NamedArguments(array('primaryKey' => $_POST['attachmentID']))); + }else{ + $attachment = new Attachment(); + $attachment->attachmentID = ''; } - if ((isset($_POST['sentDate'])) && ($_POST['sentDate'] <> "")){ - $attachment->sentDate = date("Y-m-d", strtotime($_POST['sentDate'])); - }else{ - $attachment->sentDate = ""; - } + if ((isset($_POST['sentDate'])) && ($_POST['sentDate'] <> "")){ + $attachment->sentDate = date("Y-m-d", strtotime($_POST['sentDate'])); + }else{ + $attachment->sentDate = ""; + } $attachment->attachmentText = $_POST['attachmentText']; $attachment->licenseID = $_POST['licenseID']; @@ -993,11 +993,11 @@ } - break; + break; //adding the attachment file to the db - saves the URL to it only - case 'addAttachmentFile': + case 'addAttachmentFile': $attachmentFile = new AttachmentFile(); $attachmentFile->attachmentID = $_GET['attachmentID']; @@ -1010,12 +1010,12 @@ echo $e->getMessage(); } - break; + break; - case 'deleteAttachment': + case 'deleteAttachment': - $attachment = new Attachment(new NamedArguments(array('primaryKey' => $_GET['attachmentID']))); + $attachment = new Attachment(new NamedArguments(array('primaryKey' => $_GET['attachmentID']))); //first delete attachments foreach ($attachment->getAttachmentFiles() as $attachmentFile) { @@ -1024,51 +1024,51 @@ try { $attachment->delete(); - echo "Attachment successfully deleted"; + echo _("Attachment successfully deleted"); } catch (Exception $e) { echo $e->getMessage(); } - break; + break; - case 'deleteAttachmentFile': + case 'deleteAttachmentFile': - $attachmentFile = new AttachmentFile(new NamedArguments(array('primaryKey' => $_GET['attachmentFileID']))); + $attachmentFile = new AttachmentFile(new NamedArguments(array('primaryKey' => $_GET['attachmentFileID']))); try { $attachmentFile->delete(); - echo "Attachment file successfully deleted"; + echo _("Attachment file successfully deleted"); } catch (Exception $e) { echo $e->getMessage(); } - break; + break; //updates license status when a new one is selected in dropdown box - case 'updateStatus': + case 'updateStatus': $licenseID = $_GET['licenseID']; $statusID = $_GET['statusID']; - $statusDate = date( 'Y-m-d H:i:s' ); + $statusDate = date( 'Y-m-d H:i:s' ); - //update license - $license = new License(new NamedArguments(array('primaryKey' => $_GET['licenseID']))); + //update license + $license = new License(new NamedArguments(array('primaryKey' => $_GET['licenseID']))); $license->statusID = $statusID; $license->statusDate = $statusDate; try { $license->save(); - echo "Status has been updated"; + echo _("Status has been updated"); } catch (Exception $e) { echo $e->getMessage(); } - break; + break; //used for autocomplete of signer name - case 'getSigners': + case 'getSigners': if (isset($_GET['searchMode'])) $searchMode = $_GET['searchMode']; else $searchMode=''; if (isset($_GET['limit'])) $limit = $_GET['limit']; else $limit = ''; @@ -1088,7 +1088,7 @@ //used for autocomplete of provider names (from organizations module) - case 'getOrganizations': + case 'getOrganizations': if (isset($_GET['searchMode'])) $searchMode = $_GET['searchMode']; else $searchMode=''; if (isset($_GET['limit'])) $limit = $_GET['limit']; else $limit = ''; @@ -1169,8 +1169,8 @@ break; default: - echo "Action " . $action . " not set up!"; - break; + echo _("Action ") . $action . _(" not set up!"); + break; } diff --git a/calendar.php b/calendar.php index 7e3dc78..6e6d4de 100644 --- a/calendar.php +++ b/calendar.php @@ -1,272 +1,272 @@ -. -** -************************************************************************************************************************** -** This page was originally intended as a standalone add-on. After interest this was added to the Licensing module -** but it was not retrofitted to more tightly integrate into the Licensing module. -*/ -include_once 'directory.php'; -$pageTitle='Home'; -include 'templates/header.php'; -//used for creating a "sticky form" for back buttons -//except we don't want it to retain if they press the 'index' button -//check what referring script is - if (isset($_SESSION['ref_script']) && ($_SESSION['ref_script'] != "license.php")){ - $reset='Y'; - }else{ - $reset='N'; - } -$_SESSION['ref_script']=$currentPage; -//below includes search options in left pane only - the results are refreshed through ajax and placed in div searchResults -//print header -$pageTitle='Calendar'; -$config = new Configuration; -$host = $config->database->host; -$username = $config->database->username; -$password = $config->database->password; -$license_databaseName = $config->database->name; -$resource_databaseName = $config->settings->resourcesDatabaseName; -$link = mysqli_connect($host, $username, $password) or die("Could not connect to host."); -mysqli_select_db($link, $license_databaseName) or die("Could not find License database."); -mysqli_select_db($link, $resource_databaseName) or die("Could not find Resource database."); -$display = array(); -$calendarSettings = new CalendarSettings(); -try{ - $calendarSettingsArray = $calendarSettings->allAsArray(); -}catch(Exception $e){ - echo "There was an error with the CalendarSettings Table please verify the table has been created."; - exit; -} -// Check for earlier version of Resource Module. With update of 1.3 the table definition changed. -$query = "Select subscriptionStartDate from `$resource_databaseName`.`Resource`"; -$result = mysqli_query($link, $query); - if ($result) { - // Previous tabel definition before Resources version 1.3 - $startDateName = "subscriptionStartDate"; - $endDateName = "subscriptionEndDate"; - } else { - $startDateName = "currentStartDate"; - $endDateName = "currentEndDate"; - } - foreach($calendarSettingsArray as $display) { - $config_error = TRUE; - if (strtolower($display['shortName']) == strtolower('Days After Subscription End')) { - if (strlen($display['value'])>0) { - $daybefore = $display['value']; - $config_error = FALSE; - } - } elseif (strtolower($display['shortName']) == strtolower('Days Before Subscription End')) { - if (strlen($display['value'])>0) { - $dayafter = $display['value']; - $config_error = FALSE; - } - } elseif (strtolower($display['shortName']) == strtolower('Resource Type(s)')) { - if (strlen($display['value'])>0) { - $resourceType = $display['value']; - $config_error = FALSE; - } - } elseif (strtolower($display['shortName']) == strtolower('Authorized Site(s)')) { - if (strlen($display['value'])>0) { - $authorizedSiteID = preg_split("/[\s,]+/", $display['value']); - $config_error = FALSE; - } - } - } - - // Validate the config settings - if ($config_error) { - echo "There was an error with the CalendarSettings Configuration."; - exit; - } - - $query = " - SELECT DATE_FORMAT(`$resource_databaseName`.`Resource`.`$endDateName`, '%Y') AS `year`, - DATE_FORMAT(`$resource_databaseName`.`Resource`.`$endDateName`, '%M') AS `month`, - DATE_FORMAT(`$resource_databaseName`.`Resource`.`$endDateName`, '%y-%m-%d') AS `sortdate`, - DATE_FORMAT(`$resource_databaseName`.`Resource`.`$endDateName`, '%m/%d/%Y') AS `$endDateName`, - `$resource_databaseName`.`Resource`.`resourceID`, `$resource_databaseName`.`Resource`.`titleText`, - `$license_databaseName`.`License`.`shortName`, - `$license_databaseName`.`License`.`licenseID`, `$resource_databaseName`.`ResourceType`.`shortName` AS resourceTypeName, `$resource_databaseName`.`ResourceType`.`resourceTypeID` - FROM `$resource_databaseName`.`Resource` - LEFT JOIN `$resource_databaseName`.`ResourceLicenseLink` ON (`$resource_databaseName`.`Resource`.`resourceID` = `$resource_databaseName`.`ResourceLicenseLink`.`resourceID`) - LEFT JOIN `$license_databaseName`.`License` ON (`ResourceLicenseLink`.`licenseID` = `$license_databaseName`.`License`.`licenseID`) - INNER JOIN `$resource_databaseName`.`ResourceType` ON (`$resource_databaseName`.`Resource`.`resourceTypeID` = `$resource_databaseName`.`ResourceType`.`resourceTypeID`) - WHERE - `$resource_databaseName`.`Resource`.`archiveDate` IS NULL AND - `$resource_databaseName`.`Resource`.`$endDateName` IS NOT NULL AND - `$resource_databaseName`.`Resource`.`$endDateName` <> '00/00/0000' AND - `$resource_databaseName`.`Resource`.`$endDateName` BETWEEN (CURDATE() - INTERVAL " . $daybefore . " DAY) AND (CURDATE() + INTERVAL " . $dayafter . " DAY) "; - if ($resourceType) { - $query = $query . " AND `$resource_databaseName`.`Resource`.`resourceTypeID` IN ( ". $resourceType . " ) "; - } -$query = $query . "ORDER BY `sortdate`, `$resource_databaseName`.`Resource`.`titleText`"; -$result = mysqli_query($link, $query) or die("Bad Query Failure"); -?> - -
      - - - - -
      - Upcoming License Renewals -
      - -
      - - - "; - $year_html = $year_html . ""; - $year_html = $year_html . ""; - $displayYear = TRUE; - } - - if ($mMonth != $row["month"]) { - $mMonth = $row["month"]; - - $month_html = ""; - $month_html = $month_html . ""; - $month_html = $month_html . ""; - $month_html = $month_html . ""; - $displayMonth = TRUE; - } - - $html = $html . ""; - - if ($i % 2 == 0) { - $alt = "alt"; - } else { - $alt = ""; - } - $date1 = new DateTime(date("m/d/y")); - $date2 = new DateTime($row["currentEndDate"]); - $interval = $date1->diff($date2); - $num_days = ((($interval->y) * 365) + (($interval->m) * 30) + ($interval->d)); - - $html = $html . ""; - $html = $html . " - - "; - $html = $html . ""; - - if (count($arr3) > 0) { - if ($displayYear) { - echo $year_html; - $displayYear = FALSE; - } - if ($displayMonth) { - echo $month_html; - $displayMonth = FALSE; - } - echo $html; - } - - } - - ?> - -
      - - - - - - -
      " . $mYear . "
      -
      - - - - - - -
         " . $mMonth . "
      -
      "; - - $html = $html . "      ". $row["titleText"] . ""; - $html = $html . "  [License: "; - if (is_null($row["licenseID"])) { - $html = $html . "No associated licenses available."; - } else { - $html = $html . "". $row["shortName"] . ""; - } - $html = $html . " ] - " . $row["resourceTypeName"] . " "; - if ($interval->invert) { - $html = $html . "- Expired $num_days days ago"; - } else { - $html = $html . "- Expires in "; - - if ($date1 > $date2) { - $html = $html . "(" . $num_days . " days)"; ; - } else { - $html = $html . $num_days . " days "; ; - } - } - $k = 0; - $siteID = array(); - - while ($row2 = mysqli_fetch_assoc($result2)) { - if ($k == 0) { - $html = $html . "
            Participants: "; - } else { - $html = $html . ", "; - } - - $html = $html . $row2["shortName"]; - array_push( $siteID, $row2["authorizedSiteID"] ); - $k = $k + 1; - } - - $arr3 = array_intersect($authorizedSiteID, $siteID); - $html = $html . "
      -
      -
      -
      - - +. +** +************************************************************************************************************************** +** This page was originally intended as a standalone add-on. After interest this was added to the Licensing module +** but it was not retrofitted to more tightly integrate into the Licensing module. +*/ +include_once 'directory.php'; +$pageTitle=_('Home'); +include 'templates/header.php'; +//used for creating a "sticky form" for back buttons +//except we don't want it to retain if they press the 'index' button +//check what referring script is + if (isset($_SESSION['ref_script']) && ($_SESSION['ref_script'] != "license.php")){ + $reset='Y'; + }else{ + $reset='N'; + } +$_SESSION['ref_script']=$currentPage; +//below includes search options in left pane only - the results are refreshed through ajax and placed in div searchResults +//print header +$pageTitle=_('Calendar'); +$config = new Configuration; +$host = $config->database->host; +$username = $config->database->username; +$password = $config->database->password; +$license_databaseName = $config->database->name; +$resource_databaseName = $config->settings->resourcesDatabaseName; +$link = mysqli_connect($host, $username, $password) or die(_("Could not connect to host.")); +mysqli_select_db($link, $license_databaseName) or die(_("Could not find License database.")); +mysqli_select_db($link, $resource_databaseName) or die(_("Could not find Resource database.")); +$display = array(); +$calendarSettings = new CalendarSettings(); +try{ + $calendarSettingsArray = $calendarSettings->allAsArray(); +}catch(Exception $e){ + echo ""._("There was an error with the CalendarSettings Table please verify the table has been created.").""; + exit; +} +// Check for earlier version of Resource Module. With update of 1.3 the table definition changed. +$query = "Select subscriptionStartDate from `$resource_databaseName`.`Resource`"; +$result = mysqli_query($link, $query); + if ($result) { + // Previous tabel definition before Resources version 1.3 + $startDateName = "subscriptionStartDate"; + $endDateName = "subscriptionEndDate"; + } else { + $startDateName = "currentStartDate"; + $endDateName = "currentEndDate"; + } + foreach($calendarSettingsArray as $display) { + $config_error = TRUE; + if (strtolower($display['shortName']) == strtolower('Days After Subscription End')) { + if (strlen($display['value'])>0) { + $daybefore = $display['value']; + $config_error = FALSE; + } + } elseif (strtolower($display['shortName']) == strtolower('Days Before Subscription End')) { + if (strlen($display['value'])>0) { + $dayafter = $display['value']; + $config_error = FALSE; + } + } elseif (strtolower($display['shortName']) == strtolower('Resource Type(s)')) { + if (strlen($display['value'])>0) { + $resourceType = $display['value']; + $config_error = FALSE; + } + } elseif (strtolower($display['shortName']) == strtolower('Authorized Site(s)')) { + if (strlen($display['value'])>0) { + $authorizedSiteID = preg_split("/[\s,]+/", $display['value']); + $config_error = FALSE; + } + } + } + + // Validate the config settings + if ($config_error) { + echo ""._("There was an error with the CalendarSettings Configuration.").""; + exit; + } + + $query = " + SELECT DATE_FORMAT(`$resource_databaseName`.`Resource`.`$endDateName`, '%Y') AS `year`, + DATE_FORMAT(`$resource_databaseName`.`Resource`.`$endDateName`, '%M') AS `month`, + DATE_FORMAT(`$resource_databaseName`.`Resource`.`$endDateName`, '%y-%m-%d') AS `sortdate`, + DATE_FORMAT(`$resource_databaseName`.`Resource`.`$endDateName`, '%m/%d/%Y') AS `$endDateName`, + `$resource_databaseName`.`Resource`.`resourceID`, `$resource_databaseName`.`Resource`.`titleText`, + `$license_databaseName`.`License`.`shortName`, + `$license_databaseName`.`License`.`licenseID`, `$resource_databaseName`.`ResourceType`.`shortName` AS resourceTypeName, `$resource_databaseName`.`ResourceType`.`resourceTypeID` + FROM `$resource_databaseName`.`Resource` + LEFT JOIN `$resource_databaseName`.`ResourceLicenseLink` ON (`$resource_databaseName`.`Resource`.`resourceID` = `$resource_databaseName`.`ResourceLicenseLink`.`resourceID`) + LEFT JOIN `$license_databaseName`.`License` ON (`ResourceLicenseLink`.`licenseID` = `$license_databaseName`.`License`.`licenseID`) + INNER JOIN `$resource_databaseName`.`ResourceType` ON (`$resource_databaseName`.`Resource`.`resourceTypeID` = `$resource_databaseName`.`ResourceType`.`resourceTypeID`) + WHERE + `$resource_databaseName`.`Resource`.`archiveDate` IS NULL AND + `$resource_databaseName`.`Resource`.`$endDateName` IS NOT NULL AND + `$resource_databaseName`.`Resource`.`$endDateName` <> '00/00/0000' AND + `$resource_databaseName`.`Resource`.`$endDateName` BETWEEN (CURDATE() - INTERVAL " . $daybefore . " DAY) AND (CURDATE() + INTERVAL " . $dayafter . " DAY) "; + if ($resourceType) { + $query = $query . " AND `$resource_databaseName`.`Resource`.`resourceTypeID` IN ( ". $resourceType . " ) "; + } +$query = $query . "ORDER BY `sortdate`, `$resource_databaseName`.`Resource`.`titleText`"; +$result = mysqli_query($link, $query) or die(_("Bad Query Failure")); +?> + +
      + + + + +
      + +
      + +
      + + + "; + $year_html = $year_html . ""; + $year_html = $year_html . ""; + $displayYear = TRUE; + } + + if ($mMonth != $row["month"]) { + $mMonth = $row["month"]; + + $month_html = ""; + $month_html = $month_html . ""; + $month_html = $month_html . ""; + $month_html = $month_html . ""; + $displayMonth = TRUE; + } + + $html = $html . ""; + + if ($i % 2 == 0) { + $alt = "alt"; + } else { + $alt = ""; + } + $date1 = new DateTime(date("m/d/y")); + $date2 = new DateTime($row["currentEndDate"]); + $interval = $date1->diff($date2); + $num_days = ((($interval->y) * 365) + (($interval->m) * 30) + ($interval->d)); + + $html = $html . ""; + $html = $html . " + + "; + $html = $html . ""; + + if (count($arr3) > 0) { + if ($displayYear) { + echo $year_html; + $displayYear = FALSE; + } + if ($displayMonth) { + echo $month_html; + $displayMonth = FALSE; + } + echo $html; + } + + } + + ?> + +
      + + + + + + +
      " . $mYear . "
      +
      + + + + + + +
         " . $mMonth . "
      +
      "; + + $html = $html . "      ". $row["titleText"] . ""; + $html = $html . "  [License: "; + if (is_null($row["licenseID"])) { + $html = $html . ""._("No associated licenses available.").""; + } else { + $html = $html . "". $row["shortName"] . ""; + } + $html = $html . " ] - " . $row["resourceTypeName"] . " "; + if ($interval->invert) { + $html = $html . "- "._("Expired ").$num_days._(" days ago").""; + } else { + $html = $html . _("- Expires in "); + + if ($date1 > $date2) { + $html = $html . "(" . $num_days . _(" days)").""; + } else { + $html = $html . $num_days . _(" days "); + } + } + $k = 0; + $siteID = array(); + + while ($row2 = mysqli_fetch_assoc($result2)) { + if ($k == 0) { + $html = $html . "
            "._("Participants: "); + } else { + $html = $html . ", "; + } + + $html = $html . $row2["shortName"]; + array_push( $siteID, $row2["authorizedSiteID"] ); + $k = $k + 1; + } + + $arr3 = array_intersect($authorizedSiteID, $siteID); + $html = $html . "
      +
      +
      +
      + + diff --git a/compare.php b/compare.php index 54b2730..7a2244b 100644 --- a/compare.php +++ b/compare.php @@ -19,7 +19,7 @@ include_once 'directory.php'; -$pageTitle='Expression Comparison'; +$pageTitle=_('Expression Comparison'); include 'templates/header.php'; //set referring page @@ -36,7 +36,7 @@
      - Limit by Expression Type:  +  
      -
      margin-left:123px;'>
      +
      margin-left:123px;'>
      - +
      There was an error processing this request - please verify configuration.ini is set up for organizations correctly and the database and tables have been created."; + echo ""._("There was an error processing this request - please verify configuration.ini is set up for organizations correctly and the database and tables have been created.").""; } ?> @@ -98,11 +98,11 @@ - +
      @@ -146,7 +146,7 @@ - +
      @@ -202,7 +202,7 @@ - +
      ' /> @@ -212,7 +212,7 @@ - +
      -  new search +   diff --git a/install/css/style.css b/install/css/style.css index 21cf4a1..3695eb6 100644 --- a/install/css/style.css +++ b/install/css/style.css @@ -1,7 +1,7 @@ html { height: 100%; margin: 0; - padding: 0 + padding: 0; } body { @@ -10,7 +10,6 @@ body { color: #2c3c42; font-family: "arial"; font-size: 10pt; - font-weight: heavy; background: #FFFFFF; margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */ padding: 0; @@ -49,21 +48,21 @@ span.redText{color:red;} span.span_AttachmentNumber{font-size:small;font-weight:normal; color:gray} .space { -line-height: 1 em; -font-size:2; +line-height: 1em; +font-size:2pt; } img {border:0;} fieldset {border:0;} -select option { color: #3D545D; font-family: "arial"; font-size: 8pt; font-weight: medium; } -.optionStyle { color: #3D545D; font-family: "arial"; font-size: 8pt; font-weight: medium; } +select option { color: #3D545D; font-family: "arial"; font-size: 8pt; } +.optionStyle { color: #3D545D; font-family: "arial"; font-size: 8pt; } .errorText { color: red;font-size:95%; } -input, select, multiple, textarea{color: #3D545D; font-family: "arial"; font-size: 8pt; font-weight: medium;} +input, select, multiple, textarea{color: #3D545D; font-family: "arial"; font-size: 8pt;} table.titleTable {width:900px;background-image:url('../images/licensingtitle.gif');background-repeat:no-repeat;height:87px;} -table.headerTable {width:900px;min-height:40px;background-image:url('../images/header.gif');background-repeat:no-repeat;text-align:left} +table.headerTable {width:900px;min-height:40px;background-image:url('../images/header.gif');background-repeat:no-repeat;text-align:left;} .headerText {font-size:125%;font-weight:bold; } .titleText {font-size:130%;font-weight:bold; } @@ -151,7 +150,6 @@ table.dataTable tr {vertical-align: top;} border-top: 1px solid #dad5c9; border-right: 1px solid #dad5c9; border-bottom: 1px solid #dad5c9; - background-color: white; vertical-align: top; } @@ -170,7 +168,7 @@ table.verticalFormTable { table.verticalFormTable td { margin: 0; - padding: 3px 3px 3px 3px; + padding: 3px; border-width: 1px 1px 0 0; border-style: solid; border-color: #e0dfe3; @@ -181,7 +179,7 @@ table.verticalFormTable td { table.verticalFormTable td.alt { margin: 0; - padding: 3px 3px 3px 3px; + padding: 3px; border-width: 1px 1px 0 0; border-style: solid; border-color: #e0dfe3; @@ -232,7 +230,6 @@ table.thickboxTable{ color: #2c3c42; font-family: "arial"; font-size: 8pt; - font-weight: heavy; } .smallText{font-size:small;} @@ -275,7 +272,7 @@ input.dp-applied { } .adminAddInput{margin-top:5px;} -.licenseAddInput{margin-top:5px;margin-bottom;5px;} +.licenseAddInput{margin-top:5px;margin-bottom:5px;} diff --git a/install/index.php b/install/index.php index ec4c441..cc121f4 100644 --- a/install/index.php +++ b/install/index.php @@ -1,21 +1,22 @@ -installed()) { - header('Location: install.php'); - exit; -} else if ($next_version = $installer->getNextUpdateVersion()) { - header('Location: update.php?version='.$next_version); - exit; -} - -$installer->header('CORAL Maintenance'); -?> - displayMessages(); ?> - displayErrorMessages(); ?> -

      CORAL Licensing

      -

      Your CORAL Licensing Module is correctly installed and there are no pending updates.

      -footer(); +installed()) { + header('Location: install.php'); + exit; +} else if ($next_version = $installer->getNextUpdateVersion()) { + header('Location: update.php?version='.$next_version); + exit; +} + +$installer->header('CORAL Maintenance'); +?> + displayMessages(); ?> + displayErrorMessages(); ?> +

      CORAL Licensing

      +

      Your CORAL Licensing Module is correctly installed and there are no pending updates.

      +

      Go to Licensing Module

      +footer(); ?> \ No newline at end of file diff --git a/install/manual_upgrade_charset_utf8.txt b/install/manual_upgrade_charset_utf8.txt new file mode 100644 index 0000000..16ed221 --- /dev/null +++ b/install/manual_upgrade_charset_utf8.txt @@ -0,0 +1,6 @@ +How to change the charset in the database to utf8 from v1.3 + + -Open SQL file in /coral/licensing/install/protected/update_latin1-to-utf8.sql and replace _DATABASE_NAME_ with your database schema name + -Run SQL file + +This script will change the charset in the database and convert all tables to utf8. \ No newline at end of file diff --git a/install/protected/install.sql b/install/protected/install.sql index ccf0a6a..9bc3114 100644 --- a/install/protected/install.sql +++ b/install/protected/install.sql @@ -4,7 +4,7 @@ CREATE TABLE IF NOT EXISTS `Attachment` ( `sentDate` date default NULL, `attachmentText` text, PRIMARY KEY USING BTREE (`attachmentID`) -) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; +) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `AttachmentFile` ( @@ -12,14 +12,14 @@ CREATE TABLE IF NOT EXISTS `AttachmentFile` ( `attachmentID` int(10) unsigned NOT NULL, `attachmentURL` varchar(200) NOT NULL, PRIMARY KEY USING BTREE (`attachmentFileID`) -) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; +) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `Consortium` ( `consortiumID` int(10) unsigned NOT NULL auto_increment, `shortName` tinytext NOT NULL, PRIMARY KEY (`consortiumID`) -) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; +) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `Document` ( @@ -32,14 +32,14 @@ CREATE TABLE IF NOT EXISTS `Document` ( `documentURL` varchar(200) default NULL, `parentDocumentID` int(10) unsigned default NULL, PRIMARY KEY (`documentID`) -) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; +) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `DocumentType` ( `documentTypeID` int(10) unsigned NOT NULL auto_increment, `shortName` tinytext NOT NULL, PRIMARY KEY (`documentTypeID`) -) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; +) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `Expression` ( @@ -51,7 +51,7 @@ CREATE TABLE IF NOT EXISTS `Expression` ( `lastUpdateDate` timestamp NOT NULL default '0000-00-00 00:00:00', `productionUseInd` tinyint(1) NOT NULL default '0', PRIMARY KEY (`expressionID`) -) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; +) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; @@ -62,7 +62,7 @@ CREATE TABLE IF NOT EXISTS `ExpressionNote` ( `displayOrderSeqNumber` int(10) default NULL, `lastUpdateDate` timestamp NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (`expressionNoteID`) -) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; +) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; @@ -71,7 +71,7 @@ CREATE TABLE IF NOT EXISTS `ExpressionType` ( `shortName` tinytext NOT NULL, `noteType` varchar(45) default NULL, PRIMARY KEY (`expressionTypeID`) -) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; +) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; @@ -84,7 +84,7 @@ CREATE TABLE IF NOT EXISTS `License` ( `statusDate` datetime default NULL, `createDate` datetime default NULL, PRIMARY KEY (`licenseID`) -) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; +) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; @@ -92,7 +92,7 @@ CREATE TABLE IF NOT EXISTS `Privilege` ( `privilegeID` int(10) unsigned NOT NULL auto_increment, `shortName` varchar(50) default NULL, PRIMARY KEY USING BTREE (`privilegeID`) -) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; +) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; DROP TABLE IF EXISTS `Organization`; @@ -100,7 +100,7 @@ CREATE TABLE IF NOT EXISTS `Organization` ( `organizationID` int(10) unsigned NOT NULL auto_increment, `shortName` tinytext NOT NULL, PRIMARY KEY USING BTREE (`organizationID`) -) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; +) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `Qualifier` ( @@ -108,14 +108,14 @@ CREATE TABLE IF NOT EXISTS `Qualifier` ( `expressionTypeID` INTEGER UNSIGNED NOT NULL, `shortName` varchar(45) NOT NULL, PRIMARY KEY (`qualifierID`) -) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; +) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `ExpressionQualifierProfile` ( `expressionID` INTEGER UNSIGNED NOT NULL, `qualifierID` INTEGER UNSIGNED NOT NULL, PRIMARY KEY (`expressionID`, `qualifierID`) -)ENGINE=MyISAM DEFAULT CHARSET=latin1; +)ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `SFXProvider` ( @@ -123,7 +123,7 @@ CREATE TABLE IF NOT EXISTS `SFXProvider` ( `documentID` int(10) unsigned NOT NULL, `shortName` varchar(245) NOT NULL, PRIMARY KEY (`sfxProviderID`) -) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; +) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `Signature` ( @@ -133,7 +133,7 @@ CREATE TABLE IF NOT EXISTS `Signature` ( `signatureDate` date default NULL, `signerName` tinytext, PRIMARY KEY (`signatureID`) -) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; +) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; @@ -141,7 +141,7 @@ CREATE TABLE IF NOT EXISTS `SignatureType` ( `signatureTypeID` int(10) unsigned NOT NULL auto_increment, `shortName` tinytext NOT NULL, PRIMARY KEY (`signatureTypeID`) -) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; +) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; @@ -149,7 +149,7 @@ CREATE TABLE IF NOT EXISTS `Status` ( `statusID` int(10) unsigned NOT NULL auto_increment, `shortName` varchar(45) NOT NULL, PRIMARY KEY (`statusID`) -) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; +) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `User` ( @@ -159,7 +159,7 @@ CREATE TABLE IF NOT EXISTS `User` ( `privilegeID` int(10) unsigned default NULL, `emailAddressForTermsTool` varchar(150) default NULL, PRIMARY KEY USING BTREE (`loginID`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1; +) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS CalendarSettings ( @@ -167,7 +167,7 @@ CREATE TABLE IF NOT EXISTS CalendarSettings ( `shortName` tinytext NOT NULL, `value` varchar(45) DEFAULT NULL, PRIMARY KEY (`calendarSettingsID`) -) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; +) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; DELETE FROM DocumentType; INSERT INTO DocumentType (shortName) values ('SERU'); diff --git a/install/protected/update_latin1-to-utf8.sql b/install/protected/update_latin1-to-utf8.sql new file mode 100644 index 0000000..eea0e15 --- /dev/null +++ b/install/protected/update_latin1-to-utf8.sql @@ -0,0 +1,20 @@ +ALTER DATABASE `_DATABASE_NAME_` CHARACTER SET utf8 COLLATE utf8_general_ci; +ALTER TABLE `_DATABASE_NAME_`.`Attachment` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; +ALTER TABLE `_DATABASE_NAME_`.`AttachmentFile` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; +ALTER TABLE `_DATABASE_NAME_`.`Consortium` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; +ALTER TABLE `_DATABASE_NAME_`.`Document` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; +ALTER TABLE `_DATABASE_NAME_`.`DocumentType` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; +ALTER TABLE `_DATABASE_NAME_`.`Expression` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; +ALTER TABLE `_DATABASE_NAME_`.`ExpressionNote` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; +ALTER TABLE `_DATABASE_NAME_`.`ExpressionType` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; +ALTER TABLE `_DATABASE_NAME_`.`License` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; +ALTER TABLE `_DATABASE_NAME_`.`Privilege` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; +ALTER TABLE `_DATABASE_NAME_`.`Organization` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; +ALTER TABLE `_DATABASE_NAME_`.`Qualifier` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; +ALTER TABLE `_DATABASE_NAME_`.`ExpressionQualifierProfile` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; +ALTER TABLE `_DATABASE_NAME_`.`SFXProvider` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; +ALTER TABLE `_DATABASE_NAME_`.`Signature` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; +ALTER TABLE `_DATABASE_NAME_`.`SignatureType` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; +ALTER TABLE `_DATABASE_NAME_`.`Status` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; +ALTER TABLE `_DATABASE_NAME_`.`User` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; +ALTER TABLE `_DATABASE_NAME_`.`CalendarSettings` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; \ No newline at end of file diff --git a/js/admin.js b/js/admin.js index 12f0721..ebc5398 100644 --- a/js/admin.js +++ b/js/admin.js @@ -119,7 +119,7 @@ function addData(tableName){ if ($('#new' + tableName).val()) { - $('#span_' + tableName + "_response").html('  Processing...'); + $('#span_' + tableName + "_response").html("  "+_("Processing...")); $.ajax({ type: "POST", @@ -252,9 +252,9 @@ function submitQualifier(){ function deleteData(tableName, deleteID){ - if (confirm("Do you really want to delete this data?") == true) { + if (confirm(_("Do you really want to delete this data?")) == true) { - $('#span_' + tableName + "_response").html('  Processing...'); + $('#span_' + tableName + "_response").html("  "+_("Processing...")); $.ajax({ type: "GET", url: "ajax_processing.php", @@ -277,9 +277,9 @@ function submitQualifier(){ function deleteUser(loginID){ - if (confirm("Do you really want to delete this user?") == true) { + if (confirm(_("Do you really want to delete this user?")) == true) { - $('#span_User_response').html('  Processing...'); + $('#span_User_response').html("  "+_("Processing...")); $.ajax({ type: "GET", url: "ajax_processing.php", @@ -303,9 +303,9 @@ function submitQualifier(){ function deleteExpressionType(deleteID){ - if (confirm("Do you really want to delete this expression type? Any associated Qualifiers will be deleted as well.") == true) { + if (confirm(_("Do you really want to delete this expression type? Any associated Qualifiers will be deleted as well.")) == true) { - $("#span_ExpressionType_response").html('  Processing...'); + $("#span_ExpressionType_response").html("  "+_("Processing...")); $.ajax({ type: "GET", url: "ajax_processing.php", @@ -330,9 +330,9 @@ function submitQualifier(){ function deleteQualifier(deleteID){ - if (confirm("Do you really want to delete this data?") == true) { + if (confirm(_("Do you really want to delete this data?")) == true) { - $("#span_Qualifier_response").html('  Processing...'); + $("#span_Qualifier_response").html("  "+_("Processing...")); $.ajax({ type: "GET", url: "ajax_processing.php", @@ -354,7 +354,7 @@ function submitQualifier(){ function showAdd(tableName){ - $('#span_new' + tableName).html(" add"); + $('#span_new' + tableName).html(" "+_("add")+""); //attach enter key event to new input and call add data when hit $('#new' + tableName).keyup(function(e) { diff --git a/js/common.js b/js/common.js index 69793e4..31095c0 100644 --- a/js/common.js +++ b/js/common.js @@ -15,7 +15,6 @@ ************************************************************************************************************************** */ - //image preloader (function($) { var cache = []; diff --git a/js/forms/attachmentForm.js b/js/forms/attachmentForm.js index 3eccf38..c461723 100644 --- a/js/forms/attachmentForm.js +++ b/js/forms/attachmentForm.js @@ -38,12 +38,12 @@ function checkUploadAttachment (file, extension){ data: { uploadAttachment: file }, success: function(response) { if (response == "1"){ - $("#div_file_message").html(" File name is already being used..."); + $("#div_file_message").html(" "+_("File name is already being used...")+""); exists=1; return false; } else if (response == "3"){ exists = "3"; - $("#div_file_message").html(" The attachments directory is not writable."); + $("#div_file_message").html(" "+_("The attachments directory is not writable.")+""); return false; } @@ -51,7 +51,7 @@ function checkUploadAttachment (file, extension){ //check if it's already been uploaded in current array //note: using indexOf prototype in common.js for IE if (URLArray.indexOf(file) >= 0){ - $("#div_file_message").html(" File name is already being used..."); + $("#div_file_message").html(" "+_("File name is already being used...")+""); exists=1; return false; } @@ -81,7 +81,7 @@ new AjaxUpload('upload_attachment_button', arrayLocation = URLArray.length; URLArray.push(fileName); - $("#div_file_success").append("
      " + fileName + " successfully uploaded. remove
      "); + $("#div_file_success").append("
      " + fileName + _(" successfully uploaded.")+" "+_("remove")+"
      "); } } @@ -98,7 +98,7 @@ new AjaxUpload('upload_attachment_button', function removeFile(arrayLocation){ - if (confirm("Do you really want to delete this attachment?") == true) { + if (confirm(_("Do you really want to delete this attachment?")) == true) { //URLArray.splice(URLArray.indexOf(value), 1); URLArray.splice(arrayLocation, 1); $("#div_" + arrayLocation).remove(); @@ -106,7 +106,7 @@ function removeFile(arrayLocation){ } function removeExistingAttachment(attachmentFileID){ - if (confirm("Do you really want to delete this attachment?") == true) { + if (confirm(_("Do you really want to delete this attachment?")) == true) { $.get("ajax_processing.php?action=deleteAttachmentFile&attachmentFileID=" + attachmentFileID, function(data){ $("#div_existing_" + attachmentFileID).remove(); diff --git a/js/forms/documentForm.js b/js/forms/documentForm.js index 949323b..1744354 100644 --- a/js/forms/documentForm.js +++ b/js/forms/documentForm.js @@ -35,7 +35,7 @@ $(function(){ $("#submitDocument").removeAttr("disabled"); canSubmit=1; }else{ - $("#span_error_shortName").html("This name is already being used!"); + $("#span_error_shortName").html(_("This name is already being used!")); $("#submitDocument").attr("disabled","disabled"); canSubmit=0; @@ -99,15 +99,15 @@ function checkUploadDocument (file, extension){ success: function(response) { if (response == "1"){ exists = "1"; - $("#div_file_message").html(" File name is already being used..."); + $("#div_file_message").html(" "+_("File name is already being used...")+""); return false; }else if (response == "2"){ exists = "2"; - $("#div_file_message").html(" File name may not contain special characters - ampersand, single quote, double quote or less than/greater than characters"); + $("#div_file_message").html(" "+_("File name may not contain special characters - ampersand, single quote, double quote or less than/greater than characters")+""); return false; } else if (response == "3"){ exists = "3"; - $("#div_file_message").html(" The documents directory is not writable."); + $("#div_file_message").html(" "+_("The documents directory is not writable.")+""); return false; }else{ exists = ""; @@ -131,7 +131,7 @@ new AjaxUpload('upload_button', if (errorMessage.size() > 0) { $("#div_file_message").html("" + errorMessage.html() + ""); } else { - $("#div_file_message").html("" + fileName + " successfully uploaded."); + $("#div_file_message").html("" + fileName + _(" successfully uploaded.")); $("#div_uploadFile").html("
      "); } } @@ -173,8 +173,8 @@ function doSubmitDocument(){ function validateForm (){ myReturn=0; - if (!validateRequired('documentTypeID','Document Type is required.')) myReturn="1"; - if (!validateRequired('shortName','Short Name is required.')) myReturn="1"; + if (!validateRequired('documentTypeID',_("Document Type is required."))) myReturn="1"; + if (!validateRequired('shortName',_("Short Name is required."))) myReturn="1"; if (myReturn == "1"){ return false; @@ -185,7 +185,7 @@ function validateForm (){ function newDocumentType(){ - $('#span_newDocumentType').html(" add"); + $('#span_newDocumentType').html(" "+_("add")+""); //attach enter key event to new input and call add data when hit $('#newDocumentType').keyup(function(e) { @@ -204,6 +204,6 @@ function addDocumentType(){ url: "ajax_processing.php?action=addDocumentType", cache: false, data: { shortName: $("#newDocumentType").val() }, - success: function(html) { $('#span_documentType').html(html); $('#span_newDocumentType').html("DocumentType has been added"); } + success: function(html) { $('#span_documentType').html(html); $('#span_newDocumentType').html(""+_("DocumentType has been added")+""); } }); } diff --git a/js/forms/expressionForm.js b/js/forms/expressionForm.js index 2a0636d..12e3d1c 100644 --- a/js/forms/expressionForm.js +++ b/js/forms/expressionForm.js @@ -75,7 +75,7 @@ $("#submitExpression").click(function () { function newExpressionType(){ - $('#span_newExpressionType').html(" add"); + $('#span_newExpressionType').html(" "+_("add")+""); } @@ -86,7 +86,7 @@ function addExpressionType(){ url: "ajax_processing.php?action=addExpressionType", cache: false, data: { shortName: $("#newExpressionType").val() }, - success: function(html) { $('#span_expressionType').html(html); $('#span_newExpressionType').html("ExpressionType has been added"); } + success: function(html) { $('#span_expressionType').html(html); $('#span_newExpressionType').html(""+_("ExpressionType has been added")+""); } }); } diff --git a/js/forms/licenseForm.js b/js/forms/licenseForm.js index 296817d..a5f5df2 100644 --- a/js/forms/licenseForm.js +++ b/js/forms/licenseForm.js @@ -31,7 +31,7 @@ $(function(){ $("#span_error_licenseShortName").html(" "); $("#submitLicense").removeAttr("disabled"); }else{ - $("#span_error_licenseShortName").html("This name is already being used!"); + $("#span_error_licenseShortName").html(_("This name is already being used!")); $("#submitLicense").attr("disabled","disabled"); } @@ -54,7 +54,7 @@ $(function(){ success: function(exists) { if (exists == "0"){ $("#licenseOrganizationID").val(""); - $("#span_error_organizationNameResult").html("
      Warning! This organization will be added new."); + $("#span_error_organizationNameResult").html("
      "+_("Warning! This organization will be added new.")); }else{ $("#licenseOrganizationID").val(exists); @@ -81,7 +81,6 @@ $(function(){ $("#organizationName").autocomplete('ajax_processing.php?action=getOrganizations', { minChars: 2, max: 50, - autoFill: true, mustMatch: false, width: 233, delay: 20, @@ -116,7 +115,7 @@ $(function(){ success: function(exists) { if (exists == "0"){ $("#licenseOrganizationID").val(""); - $("#span_error_organizationNameResult").html("
      Warning! This organization will be added new."); + $("#span_error_organizationNameResult").html("
      "+_("Warning! This organization will be added new.")); }else{ $("#licenseOrganizationID").val(exists); @@ -170,7 +169,7 @@ function doSubmitLicense(){ //the following are only used when interoperability with organizations module is turned off function newConsortium(){ - $('#span_newConsortium').html(" add"); + $('#span_newConsortium').html(" "+_("add")+""); //attach enter key event to new input and call add data when hit $('#span_newConsortium').keyup(function(e) { @@ -189,7 +188,7 @@ function addConsortium(){ url: "ajax_processing.php", cache: false, data: "action=addConsortium&shortName=" + $("#newConsortium").val(), - success: function(html) { $('#span_consortium').html(html); $('#span_newConsortium').html("Consortium has been added"); } + success: function(html) { $('#span_consortium').html(html); $('#span_newConsortium').html(""+_("Consortium has been added")+""); } }); } @@ -198,8 +197,8 @@ function addConsortium(){ //validates fields function validateForm (){ myReturn=0; - if (!validateRequired('licenseShortName','License Name is required.')) myReturn="1"; - if (!validateRequired('organizationName','Provider is required.')) myReturn="1"; + if (!validateRequired('licenseShortName',_("License Name is required."))) myReturn="1"; + if (!validateRequired('organizationName',_("Provider is required."))) myReturn="1"; if (myReturn == "1"){ return false; diff --git a/js/forms/sfxForm.js b/js/forms/sfxForm.js index 62b5400..51ecbe3 100644 --- a/js/forms/sfxForm.js +++ b/js/forms/sfxForm.js @@ -56,8 +56,8 @@ function submitSFXForm(){ function validateForm (){ myReturn=0; - if (!validateRequired('documentID','
      A document must be selected to continue.')) myReturn="1"; - if (!validateRequired('shortName','
      Terms Tool Resource must be entered to continue.')) myReturn="1"; + if (!validateRequired('documentID',"
      "+_("A document must be selected to continue."))) myReturn="1"; + if (!validateRequired('shortName',"
      "+_("Terms Tool Resource must be entered to continue."))) myReturn="1"; if (myReturn == "1"){ diff --git a/js/forms/signatureForm.js b/js/forms/signatureForm.js index dff2da0..a359c47 100644 --- a/js/forms/signatureForm.js +++ b/js/forms/signatureForm.js @@ -23,7 +23,6 @@ $(function(){ $("#signerName").autocomplete('ajax_processing.php?action=getSigners', { minChars: 2, max: 20, - autoFill: false, mustMatch: false, width: 120, delay: 200, @@ -39,7 +38,7 @@ $(function(){ function log(event, data, formatted) { - $("
    • ").html( !data ? "No match!" : "Selected: " + formatted).html("#result"); + $("
    • ").html( !data ? _("No match!") : _("Selected: ") + formatted).html("#result"); } @@ -94,7 +93,7 @@ function updateSignatureForm(signatureID){ function removeSignature(signatureID){ - if (confirm("Do you really want to delete this signature?") == true) { + if (confirm(_("Do you really want to delete this signature?")) == true) { $.ajax({ type: "GET", url: "ajax_processing.php", @@ -113,7 +112,7 @@ function removeSignature(signatureID){ function newSignatureType(){ - $('#span_newSignatureType').html(" add"); + $('#span_newSignatureType').html(" "+_("add")+""); } @@ -124,7 +123,7 @@ function addSignatureType(){ url: "ajax_processing.php?action=addSignatureType", cache: false, data: { shortName: $("#newSignatureType").val() }, - success: function(html) { $('#span_signatureType').html(html); $('#span_newSignatureType').html("SignatureType has been added"); } + success: function(html) { $('#span_signatureType').html(html); $('#span_newSignatureType').html(""+_("SignatureType has been added")+""); } }); } diff --git a/js/index.js b/js/index.js index f53cb8e..aef69e1 100644 --- a/js/index.js +++ b/js/index.js @@ -40,7 +40,7 @@ var numberOfRecords = 25; var startWith = ''; function updateSearch(){ - $("#div_feedback").html(" Processing..."); + $("#div_feedback").html(" "+_("Processing...")+""); $.ajax({ diff --git a/js/license.js b/js/license.js index 9a73f20..3b1b19b 100644 --- a/js/license.js +++ b/js/license.js @@ -24,7 +24,7 @@ $(document).ready(function(){ updateExpressions(); updateSFXProviders(); updateAttachmentsNumber(); - updateAttachments(); + updateAttachments(); $('#div_displayDocuments').show(); @@ -37,264 +37,264 @@ $(document).ready(function(){ - viewAll=0; - displayArchiveInd=2; - showParentDocumentID=''; - showExpressionDocumentID=''; - var parentOrderBy = "DT.shortName asc, D.effectiveDate desc, max(signatureDate) desc, D.shortName asc"; - var childOrderBy = "parentDocumentID, expirationDate, DT.shortName asc, D.effectiveDate desc, max(signatureDate) desc, D.shortName asc"; - var parentArchivedOrderBy = "expirationDate, DT.shortName asc, D.effectiveDate desc, max(signatureDate) desc, D.shortName asc"; - var childArchivedOrderBy = "parentDocumentID, expirationDate, expirationDate, DT.shortName asc, D.effectiveDate desc, max(signatureDate) desc, D.shortName asc"; + viewAll=0; + displayArchiveInd=2; + showParentDocumentID=''; + showExpressionDocumentID=''; + var parentOrderBy = "DT.shortName asc, D.effectiveDate desc, max(signatureDate) desc, D.shortName asc"; + var childOrderBy = "parentDocumentID, expirationDate, DT.shortName asc, D.effectiveDate desc, max(signatureDate) desc, D.shortName asc"; + var parentArchivedOrderBy = "expirationDate, DT.shortName asc, D.effectiveDate desc, max(signatureDate) desc, D.shortName asc"; + var childArchivedOrderBy = "parentDocumentID, expirationDate, expirationDate, DT.shortName asc, D.effectiveDate desc, max(signatureDate) desc, D.shortName asc"; - $(".showDocuments").click(function () { - if (viewAll == "0"){ + $(".showDocuments").click(function () { + if (viewAll == "0"){ $('#div_displayDocuments').show(); $('#div_displayExpressions').hide(); $('#div_displaySFXProviders').hide(); $('#div_displayAttachments').hide(); } return false; - }); - - - - $(".showExpressions").click(function () { - updateExpressions(''); - - if (viewAll == "0"){ - $('#div_displayDocuments').hide(); - $('#div_displayExpressions').show(); - $('#div_displaySFXProviders').hide(); - $('#div_displayAttachments').hide(); - } - - return false; - }); - - - - $(".showSFXProviders").click(function () { - if (viewAll == "0"){ - $('#div_displayDocuments').hide(); - $('#div_displayExpressions').hide(); - $('#div_displaySFXProviders').show(); - $('#div_displayAttachments').hide(); - } - return false; - }); - - - - $(".showAttachments").click(function () { - if (viewAll == "0"){ + }); + + + + $(".showExpressions").click(function () { + updateExpressions(''); + + if (viewAll == "0"){ + $('#div_displayDocuments').hide(); + $('#div_displayExpressions').show(); + $('#div_displaySFXProviders').hide(); + $('#div_displayAttachments').hide(); + } + + return false; + }); + + + + $(".showSFXProviders").click(function () { + if (viewAll == "0"){ + $('#div_displayDocuments').hide(); + $('#div_displayExpressions').hide(); + $('#div_displaySFXProviders').show(); + $('#div_displayAttachments').hide(); + } + return false; + }); + + + + $(".showAttachments").click(function () { + if (viewAll == "0"){ $('#div_displayDocuments').hide(); $('#div_displayExpressions').hide(); $('#div_displaySFXProviders').hide(); $('#div_displayAttachments').show(); } return false; - }); + }); - function deleteLicense(licenseID){ - if (confirm("Do you really want to delete this license?") == true) { - $.ajax({ - type: "GET", - url: "ajax_processing.php", - cache: false, - data: "action=deleteLicense&licenseID=" + licenseID, - success: function(html) { - //post return message to index - postwith('index.php',{message:html}); - } + function deleteLicense(licenseID){ + if (confirm(_("Do you really want to delete this license?")) == true) { + $.ajax({ + type: "GET", + url: "ajax_processing.php", + cache: false, + data: "action=deleteLicense&licenseID=" + licenseID, + success: function(html) { + //post return message to index + postwith('index.php',{message:html}); + } - }); + }); - } + } - } + } - function updateLicenseHead(){ + function updateLicenseHead(){ - $.ajax({ - type: "GET", - url: "ajax_htmldata.php", - cache: false, - data: "action=getLicenseHead&licenseID=" + $("#licenseID").val(), - success: function(html) { $('#div_licenseHead').html(html); + $.ajax({ + type: "GET", + url: "ajax_htmldata.php", + cache: false, + data: "action=getLicenseHead&licenseID=" + $("#licenseID").val(), + success: function(html) { $('#div_licenseHead').html(html); tb_reinit(); - } + } - }); + }); - } + } - function updateDocuments(showChildrenDocumentID){ - if (typeof(showChildrenDocumentID) != 'undefined'){ - showParentDocumentID=showChildrenDocumentID; - } - - $.ajax({ - type: "GET", - url: "ajax_htmldata.php", - cache: false, - data: "action=getAllDocuments&licenseID=" + $("#licenseID").val() + "&showChildrenDocumentID=" + showParentDocumentID + "&parentOrderBy=" + parentOrderBy + "&childOrderBy=" + childOrderBy, - success: function(html) { - $('#div_documents').html(html); - tb_reinit(); - } + function updateDocuments(showChildrenDocumentID){ + if (typeof(showChildrenDocumentID) != 'undefined'){ + showParentDocumentID=showChildrenDocumentID; + } + + $.ajax({ + type: "GET", + url: "ajax_htmldata.php", + cache: false, + data: "action=getAllDocuments&licenseID=" + $("#licenseID").val() + "&showChildrenDocumentID=" + showParentDocumentID + "&parentOrderBy=" + parentOrderBy + "&childOrderBy=" + childOrderBy, + success: function(html) { + $('#div_documents').html(html); + tb_reinit(); + } - }); + }); - } + } - function updateArchivedDocuments(showDisplayArchiveInd, showChildrenDocumentID){ + function updateArchivedDocuments(showDisplayArchiveInd, showChildrenDocumentID){ - if ((typeof(showDisplayArchiveInd) != 'undefined') && (showDisplayArchiveInd != '')){ - displayArchiveInd=showDisplayArchiveInd; - } + if ((typeof(showDisplayArchiveInd) != 'undefined') && (showDisplayArchiveInd != '')){ + displayArchiveInd=showDisplayArchiveInd; + } - if (typeof(showChildrenDocumentID) != 'undefined'){ - showParentDocumentID=showChildrenDocumentID; - } - - $.ajax({ - type: "GET", - url: "ajax_htmldata.php", - cache: false, - data: "action=getAllDocuments&licenseID=" + $("#licenseID").val() + "&displayArchiveInd=" + displayArchiveInd + "&showChildrenDocumentID=" + showParentDocumentID + "&parentArchivedOrderBy=" + parentArchivedOrderBy + "&childArchivedOrderBy=" + childArchivedOrderBy, - success: function(html) { $('#div_archives').html(html); - tb_reinit(); - } + if (typeof(showChildrenDocumentID) != 'undefined'){ + showParentDocumentID=showChildrenDocumentID; + } + + $.ajax({ + type: "GET", + url: "ajax_htmldata.php", + cache: false, + data: "action=getAllDocuments&licenseID=" + $("#licenseID").val() + "&displayArchiveInd=" + displayArchiveInd + "&showChildrenDocumentID=" + showParentDocumentID + "&parentArchivedOrderBy=" + parentArchivedOrderBy + "&childArchivedOrderBy=" + childArchivedOrderBy, + success: function(html) { $('#div_archives').html(html); + tb_reinit(); + } - }); + }); - } + } - function showExpressionForDocument(expressionDocumentID){ - if (viewAll == "0"){ - $('#div_displayDocuments').hide(); - $('#div_displayExpressions').show(); - $('#div_displaySFXProviders').hide(); - $('#div_displayAttachments').hide(); - } - - updateExpressions(expressionDocumentID); - } + function showExpressionForDocument(expressionDocumentID){ + if (viewAll == "0"){ + $('#div_displayDocuments').hide(); + $('#div_displayExpressions').show(); + $('#div_displaySFXProviders').hide(); + $('#div_displayAttachments').hide(); + } + + updateExpressions(expressionDocumentID); + } - function updateExpressions(expressionDocumentID){ - if (typeof(expressionDocumentID) != 'undefined'){ - showExpressionDocumentID=expressionDocumentID; - } - + function updateExpressions(expressionDocumentID){ + if (typeof(expressionDocumentID) != 'undefined'){ + showExpressionDocumentID=expressionDocumentID; + } + - $.ajax({ - type: "GET", - url: "ajax_htmldata.php", - cache: false, - data: "action=getAllExpressions&licenseID=" + $("#licenseID").val() + "&documentID=" + showExpressionDocumentID, - success: function(html) { $('#div_expressions').html(html); - tb_reinit(); - } + $.ajax({ + type: "GET", + url: "ajax_htmldata.php", + cache: false, + data: "action=getAllExpressions&licenseID=" + $("#licenseID").val() + "&documentID=" + showExpressionDocumentID, + success: function(html) { $('#div_expressions').html(html); + tb_reinit(); + } - }); + }); - } + } - function updateSFXProviders(){ + function updateSFXProviders(){ - $.ajax({ - type: "GET", - url: "ajax_htmldata.php", - cache: false, - data: "action=getAllSFXProviders&licenseID=" + $("#licenseID").val(), - success: function(html) { $('#div_sfxProviders').html(html); - tb_reinit(); - } + $.ajax({ + type: "GET", + url: "ajax_htmldata.php", + cache: false, + data: "action=getAllSFXProviders&licenseID=" + $("#licenseID").val(), + success: function(html) { $('#div_sfxProviders').html(html); + tb_reinit(); + } - }); + }); - } + } - function updateAttachments(){ + function updateAttachments(){ - $.ajax({ - type: "GET", - url: "ajax_htmldata.php", - cache: false, - data: "action=getAllAttachments&licenseID=" + $("#licenseID").val(), - success: function(html) { $('#div_attachments').html(html); - updateAttachmentsNumber(); - tb_reinit(); - } + $.ajax({ + type: "GET", + url: "ajax_htmldata.php", + cache: false, + data: "action=getAllAttachments&licenseID=" + $("#licenseID").val(), + success: function(html) { $('#div_attachments').html(html); + updateAttachmentsNumber(); + tb_reinit(); + } - }); + }); - } + } function updateAttachmentsNumber(){ - $.ajax({ + $.ajax({ type: "GET", url: "ajax_htmldata.php", cache: false, data: "action=getAttachmentsNumber&licenseID=" + $("#licenseID").val(), success: function(remaining) { if (remaining == "1"){ - $(".span_AttachmentNumber").html("(" + remaining + " record)"); + $(".span_AttachmentNumber").html("(" + remaining + _(" record)")); }else{ - $(".span_AttachmentNumber").html("(" + remaining + " records)"); + $(".span_AttachmentNumber").html("(" + remaining + _(" records)")); } } - }); + }); } - function updateStatus(){ + function updateStatus(){ - $.ajax({ - type: "GET", - url: "ajax_processing.php", - cache: false, - data: "action=updateStatus&licenseID=" + $("#licenseID").val() + "&statusID=" + $("#statusID").val(), - success: function(html) { - $('#span_updateStatusResponse').html(html); - - // close the span in 3 secs - setTimeout("emptyDiv('span_updateStatusResponse');",3000); - } + $.ajax({ + type: "GET", + url: "ajax_processing.php", + cache: false, + data: "action=updateStatus&licenseID=" + $("#licenseID").val() + "&statusID=" + $("#statusID").val(), + success: function(html) { + $('#span_updateStatusResponse').html(html); + + // close the span in 3 secs + setTimeout("emptyDiv('span_updateStatusResponse');",3000); + } - }); + }); - } + } - function emptyDiv(divName){ + function emptyDiv(divName){ $('#' + divName).html(""); - } + } - function archiveDocument(documentID){ - if (confirm("Do you really want to archive this document?") == true) { + function archiveDocument(documentID){ + if (confirm(_("Do you really want to archive this document?")) == true) { $.ajax({ type: "GET", url: "ajax_processing.php", @@ -306,79 +306,79 @@ function updateAttachmentsNumber(){ updateExpressions(); } }); - } + } - } + } - function deleteDocument(documentID){ - if (confirm("Do you really want to delete this document?") == true) { - $.ajax({ - type: "GET", - url: "ajax_processing.php", - cache: false, - data: "action=deleteDocument&documentID=" + documentID, - success: function(html) { - if (html) alert('There was a problem with deleting the document. You may not delete a document if there are associated expressions. Remove all expressions and try again.'); - updateDocuments(); - updateArchivedDocuments(); - } + function deleteDocument(documentID){ + if (confirm(_("Do you really want to delete this document?")) == true) { + $.ajax({ + type: "GET", + url: "ajax_processing.php", + cache: false, + data: "action=deleteDocument&documentID=" + documentID, + success: function(html) { + if (html) alert(_("There was a problem with deleting the document. You may not delete a document if there are associated expressions. Remove all expressions and try again.")); + updateDocuments(); + updateArchivedDocuments(); + } - }); + }); - } + } - } + } - function deleteExpression(expressionID){ - if (confirm("Do you really want to delete this expression?") == true) { - $.ajax({ - type: "GET", - url: "ajax_processing.php", - cache: false, - data: "action=deleteExpression&expressionID=" + expressionID, - success: function(html) { updateExpressions(); } - }); + function deleteExpression(expressionID){ + if (confirm(_("Do you really want to delete this expression?")) == true) { + $.ajax({ + type: "GET", + url: "ajax_processing.php", + cache: false, + data: "action=deleteExpression&expressionID=" + expressionID, + success: function(html) { updateExpressions(); } + }); - } + } - } + } - function deleteAttachment(attachmentID){ - if (confirm("Do you really want to delete this attachment? This will also delete all attached files.") == true) { - $.ajax({ - type: "GET", - url: "ajax_processing.php", - cache: false, - data: "action=deleteAttachment&attachmentID=" + attachmentID, - success: function(html) { updateAttachments(); } + function deleteAttachment(attachmentID){ + if (confirm(_("Do you really want to delete this attachment? This will also delete all attached files.")) == true) { + $.ajax({ + type: "GET", + url: "ajax_processing.php", + cache: false, + data: "action=deleteAttachment&attachmentID=" + attachmentID, + success: function(html) { updateAttachments(); } - }); + }); - } + } - } + } - function deleteSFXProvider(sfxProviderID){ - if (confirm("Do you really want to delete this terms tool resource link?") == true) { - $.ajax({ - type: "GET", - url: "ajax_processing.php", - cache: false, - data: "action=deleteSFXProvider&sfxProviderID=" + sfxProviderID, - success: function(html) { updateSFXProviders(); } + function deleteSFXProvider(sfxProviderID){ + if (confirm(_("Do you really want to delete this terms tool resource link?")) == true) { + $.ajax({ + type: "GET", + url: "ajax_processing.php", + cache: false, + data: "action=deleteSFXProvider&sfxProviderID=" + sfxProviderID, + success: function(html) { updateSFXProviders(); } - }); + }); - } + } - } + } function showFullAttachmentText(attachmentID){ @@ -393,102 +393,102 @@ function hideFullAttachmentText(attachmentID){ } - var exists = ''; - - function checkUploadDocument (file, extension){ - - $.ajax({ - type: "GET", - url: "ajax_processing.php", - cache: false, - data: "action=checkUploadDocument&uploadDocument=" + file, - success: function(response) { - if (response == "1"){ - exists = "1"; - $("#div_file_message").html(" File name is already being used."); - return false; - }else{ - $("#div_file_message").html(""); - exists = "0"; - } - } - - - }); - } - - - - - function replaceFile(){ - fileName = $("#upload_button").val(); - //used for the Document Edit form - defaults to show current uploaded file with an option to replace - //replace html contents with browse for uploading document. - $('#div_uploadFile').html("
      "); - - //also reinitialize the code for uploading the file - new AjaxUpload('upload_button', - {action: 'ajax_processing.php?action=uploadDocument', - name: 'myfile', - onChange : function (file, extension){checkUploadDocument(file, extension);}, - onComplete : function(data){ - fileName=data; - - if (exists == "1"){ - $("#div_file_message").html(" File name is already being used."); - }else{ - $("#div_uploadFile").html("" + fileName + " successfully uploaded."); - - } - - } - }); - - } - - - - - - function changeProdUse(expressionID){ - $.ajax({ - type: "GET", - url: "ajax_processing.php", - cache: false, - data: "action=setProdUse&expressionID=" + expressionID + "&licenseID=" + $("#licenseID").val() + "&productionUseInd=" + getCheckboxValue("productionUseInd_" + expressionID), - success: function(html) { - $("#span_prod_use_" + expressionID).html(html); - - // close the span in 3 secs - setTimeout("emptyDiv('span_prod_use_" + expressionID + "');",3000); - } - - - }); - } - - - - - function setParentOrder(column, direction){ - parentOrderBy = column + " " + direction; - updateDocuments(); - } - - - function setChildOrder(column, direction){ - childOrderBy = column + " " + direction; - updateDocuments(); - } - - - function setParentArchivedOrder(column, direction){ - parentArchivedOrderBy = column + " " + direction; - updateArchivedDocuments(); - } - - - function setChildArchivedOrder(column, direction){ - childArchivedOrderBy = column + " " + direction; - updateArchivedDocuments(); - } + var exists = ''; + + function checkUploadDocument (file, extension){ + + $.ajax({ + type: "GET", + url: "ajax_processing.php", + cache: false, + data: "action=checkUploadDocument&uploadDocument=" + file, + success: function(response) { + if (response == "1"){ + exists = "1"; + $("#div_file_message").html(" "+_("File name is already being used.")+""); + return false; + }else{ + $("#div_file_message").html(""); + exists = "0"; + } + } + + + }); + } + + + + + function replaceFile(){ + fileName = $("#upload_button").val(); + //used for the Document Edit form - defaults to show current uploaded file with an option to replace + //replace html contents with browse for uploading document. + $('#div_uploadFile').html("
      "); + + //also reinitialize the code for uploading the file + new AjaxUpload('upload_button', + {action: 'ajax_processing.php?action=uploadDocument', + name: 'myfile', + onChange : function (file, extension){checkUploadDocument(file, extension);}, + onComplete : function(data){ + fileName=data; + + if (exists == "1"){ + $("#div_file_message").html(" "+_("File name is already being used.")+""); + }else{ + $("#div_uploadFile").html("" + fileName + _(" successfully uploaded.")); + + } + + } + }); + + } + + + + + + function changeProdUse(expressionID){ + $.ajax({ + type: "GET", + url: "ajax_processing.php", + cache: false, + data: "action=setProdUse&expressionID=" + expressionID + "&licenseID=" + $("#licenseID").val() + "&productionUseInd=" + getCheckboxValue("productionUseInd_" + expressionID), + success: function(html) { + $("#span_prod_use_" + expressionID).html(html); + + // close the span in 3 secs + setTimeout("emptyDiv('span_prod_use_" + expressionID + "');",3000); + } + + + }); + } + + + + + function setParentOrder(column, direction){ + parentOrderBy = column + " " + direction; + updateDocuments(); + } + + + function setChildOrder(column, direction){ + childOrderBy = column + " " + direction; + updateDocuments(); + } + + + function setParentArchivedOrder(column, direction){ + parentArchivedOrderBy = column + " " + direction; + updateArchivedDocuments(); + } + + + function setChildArchivedOrder(column, direction){ + childArchivedOrderBy = column + " " + direction; + updateArchivedDocuments(); + } \ No newline at end of file diff --git a/js/plugins/Gettext.js b/js/plugins/Gettext.js new file mode 100644 index 0000000..8a905e6 --- /dev/null +++ b/js/plugins/Gettext.js @@ -0,0 +1,1265 @@ +/* +Pure Javascript implementation of Uniforum message translation. +Copyright (C) 2008 Joshua I. Miller , all rights reserved + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU Library General Public License as published +by the Free Software Foundation; either version 2, or (at your option) +any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +USA. + +=head1 NAME + +Javascript Gettext - Javascript implemenation of GNU Gettext API. + +=head1 SYNOPSIS + + // ////////////////////////////////////////////////////////// + // Optimum caching way + + + + var gt = new Gettext({ "domain" : "myDomain" }); + // rest is the same + + + // ////////////////////////////////////////////////////////// + // The reson the shortcuts aren't exported by default is because they'd be + // glued to the single domain you created. So, if you're adding i18n support + // to some js library, you should use it as so: + + if (typeof(MyNamespace) == 'undefined') MyNamespace = {}; + MyNamespace.MyClass = function () { + var gtParms = { "domain" : 'MyNamespace_MyClass' }; + this.gt = new Gettext(gtParams); + return this; + }; + MyNamespace.MyClass.prototype._ = function (msgid) { + return this.gt.gettext(msgid); + }; + MyNamespace.MyClass.prototype.something = function () { + var myString = this._("this will get translated"); + }; + + // ////////////////////////////////////////////////////////// + // Adding the shortcuts to a global scope is easier. If that's + // ok in your app, this is certainly easier. + var myGettext = new Gettext({ 'domain' : 'myDomain' }); + function _ (msgid) { + return myGettext.gettext(msgid); + } + alert( _("text") ); + + // ////////////////////////////////////////////////////////// + // Data structure of the json data + // NOTE: if you're loading via the + + // in domain.json + json_locale_data = { + "mydomain" : { + // po header fields + "" : { + "plural-forms" : "...", + "lang" : "en", + }, + // all the msgid strings and translations + "msgid" : [ "msgid_plural", "translation", "plural_translation" ], + }, + }; + // please see the included bin/po2json script for the details on this format + +This method also allows you to use unsupported file formats, so long as you can parse them into the above format. + +=item 2. Use AJAX to load language file. + +Use XMLHttpRequest (actually, SJAX - syncronous) to load an external resource. + +Supported external formats are: + +=over + +=item * Javascript Object Notation (.json) + +(see bin/po2json) + + type=application/json + +=item * Uniforum Portable Object (.po) + +(see GNU Gettext's xgettext) + + type=application/x-po + +=item * Machine Object (compiled .po) (.mo) + +NOTE: .mo format isn't actually supported just yet, but support is planned. + +(see GNU Gettext's msgfmt) + + type=application/x-mo + +=back + +=back + +=head1 METHODS + +The following methods are implemented: + + new Gettext(args) + textdomain (domain) + gettext (msgid) + dgettext (domainname, msgid) + dcgettext (domainname, msgid, LC_MESSAGES) + ngettext (msgid, msgid_plural, count) + dngettext (domainname, msgid, msgid_plural, count) + dcngettext (domainname, msgid, msgid_plural, count, LC_MESSAGES) + pgettext (msgctxt, msgid) + dpgettext (domainname, msgctxt, msgid) + dcpgettext (domainname, msgctxt, msgid, LC_MESSAGES) + npgettext (msgctxt, msgid, msgid_plural, count) + dnpgettext (domainname, msgctxt, msgid, msgid_plural, count) + dcnpgettext (domainname, msgctxt, msgid, msgid_plural, count, LC_MESSAGES) + strargs (string, args_array) + + +=head2 new Gettext (args) + +Several methods of loading locale data are included. You may specify a plugin or alternative method of loading data by passing the data in as the "locale_data" option. For example: + + var get_locale_data = function () { + // plugin does whatever to populate locale_data + return locale_data; + }; + var gt = new Gettext( 'domain' : 'messages', + 'locale_data' : get_locale_data() ); + +The above can also be used if locale data is specified in a statically included - - + +getLanguage($str); + if($default_l==null || empty($default_l)){$default_l=$str;} + if(isset($_COOKIE["lang"])){ + if($_COOKIE["lang"]==$http_lang && $_COOKIE["lang"] != "en_US"){ + echo ""; + } + }else if($default_l==$http_lang && $default_l != "en_US"){ + echo ""; + } +?> + + + - +
      @@ -84,7 +100,7 @@
      lastName){ echo $user->firstName . " " . $user->lastName; @@ -93,7 +109,7 @@ } ?> -
      settings->authModule == 'Y'){ echo "logout | Help"; } ?> +
      settings->authModule == 'Y'){ echo ""._("logout")." | Help"; } ?>
      @@ -118,46 +134,40 @@ //only show the 'Change Module' if there are other modules installed or if there is an index to the main CORAL page $config = new Configuration(); -if ((file_exists($util->getCORALPath() . "index.php")) || ($config->settings->organizationsModule == 'Y') || ($config->settings->resourcesModule == 'Y') || ($config->settings->cancellationModule == 'Y') || ($config->settings->usageModule == 'Y')) { +if ((file_exists($util->getCORALPath() . "index.php")) || ($config->settings->organizationsModule == 'Y') || ($config->settings->resourcesModule == 'Y') || ($config->settings->managementModule == 'Y') || ($config->settings->usageModule == 'Y')) { ?> -
      -
        -
      •   -
          - getCORALPath() . "index.php")) {?> -
        • - settings->organizationsModule == 'Y') { - ?> -
        • - settings->resourcesModule == 'Y') { - ?> -
        • - settings->cancellationModule == 'Y') { - ?> -
        • - settings->usageModule == 'Y') { - ?> -
        • - settings->managementModule == 'Y') { - ?> -
        • - -
        -
      • -
      - +
      +
        +
      •   +
          + getCORALPath() . "index.php")) {?> +
        • + settings->licensingModule == 'Y') { + ?> +
        • + settings->organizationsModule == 'Y') { + ?> +
        • + settings->usageModule == 'Y') { + ?> +
        • + settings->managementModule == 'Y') { + ?> +
        • + +
        +
      • +
      - + + + + diff --git a/terms_report.php b/terms_report.php index a67fae2..b5e1ec0 100644 --- a/terms_report.php +++ b/terms_report.php @@ -19,7 +19,7 @@ include_once 'directory.php'; -$pageTitle='Terms Report'; +$pageTitle=_('Terms Report'); include 'templates/header.php'; //set referring page From 13005708bd7f89fa72857c8e531ba6b89117a18c Mon Sep 17 00:00:00 2001 From: Bradley Droubay Date: Mon, 14 Mar 2016 15:15:23 -0600 Subject: [PATCH 15/55] Localization directories and images --- images/change/{ => en_US}/coral-change.gif | Bin images/change/fr_FR/coral-change.gif | Bin 0 -> 1139 bytes images/menu/{ => en_US}/menu-admin-on.gif | Bin images/menu/{ => en_US}/menu-admin-over.gif | Bin images/menu/{ => en_US}/menu-admin.gif | Bin images/menu/{ => en_US}/menu-calendar-on.gif | Bin images/menu/{ => en_US}/menu-calendar-over.gif | Bin images/menu/{ => en_US}/menu-calendar.gif | Bin .../{ => en_US}/menu-expressioncomparison-on.gif | Bin .../menu-expressioncomparison-over.gif | Bin .../{ => en_US}/menu-expressioncomparison.gif | Bin images/menu/{ => en_US}/menu-home-on.gif | Bin images/menu/{ => en_US}/menu-home-over.gif | Bin images/menu/{ => en_US}/menu-home.gif | Bin .../{ => en_US}/menu-licensesinprogress-on.gif | Bin .../{ => en_US}/menu-licensesinprogress-over.gif | Bin .../menu/{ => en_US}/menu-licensesinprogress.gif | Bin images/menu/{ => en_US}/menu-newlicense-on.gif | Bin images/menu/{ => en_US}/menu-newlicense-over.gif | Bin images/menu/{ => en_US}/menu-newlicense.gif | Bin images/menu/fr_FR/menu-admin-on.gif | Bin 0 -> 929 bytes images/menu/fr_FR/menu-admin-over.gif | Bin 0 -> 928 bytes images/menu/fr_FR/menu-admin.gif | Bin 0 -> 929 bytes images/menu/fr_FR/menu-calendar-on.gif | Bin 0 -> 937 bytes images/menu/fr_FR/menu-calendar-over.gif | Bin 0 -> 929 bytes images/menu/fr_FR/menu-calendar.gif | Bin 0 -> 937 bytes .../menu/fr_FR/menu-expressioncomparison-on.gif | Bin 0 -> 1323 bytes .../fr_FR/menu-expressioncomparison-over.gif | Bin 0 -> 1322 bytes images/menu/fr_FR/menu-expressioncomparison.gif | Bin 0 -> 1323 bytes images/menu/fr_FR/menu-home-on.gif | Bin 0 -> 806 bytes images/menu/fr_FR/menu-home-over.gif | Bin 0 -> 806 bytes images/menu/fr_FR/menu-home.gif | Bin 0 -> 806 bytes images/menu/fr_FR/menu-licensesinprogress-on.gif | Bin 0 -> 794 bytes .../menu/fr_FR/menu-licensesinprogress-over.gif | Bin 0 -> 793 bytes images/menu/fr_FR/menu-licensesinprogress.gif | Bin 0 -> 794 bytes images/menu/fr_FR/menu-newlicense-on.gif | Bin 0 -> 1004 bytes images/menu/fr_FR/menu-newlicense-over.gif | Bin 0 -> 1002 bytes images/menu/fr_FR/menu-newlicense.gif | Bin 0 -> 1004 bytes templates/header.php | 6 +++--- 39 files changed, 3 insertions(+), 3 deletions(-) rename images/change/{ => en_US}/coral-change.gif (100%) create mode 100644 images/change/fr_FR/coral-change.gif rename images/menu/{ => en_US}/menu-admin-on.gif (100%) rename images/menu/{ => en_US}/menu-admin-over.gif (100%) rename images/menu/{ => en_US}/menu-admin.gif (100%) rename images/menu/{ => en_US}/menu-calendar-on.gif (100%) rename images/menu/{ => en_US}/menu-calendar-over.gif (100%) rename images/menu/{ => en_US}/menu-calendar.gif (100%) rename images/menu/{ => en_US}/menu-expressioncomparison-on.gif (100%) rename images/menu/{ => en_US}/menu-expressioncomparison-over.gif (100%) rename images/menu/{ => en_US}/menu-expressioncomparison.gif (100%) rename images/menu/{ => en_US}/menu-home-on.gif (100%) rename images/menu/{ => en_US}/menu-home-over.gif (100%) rename images/menu/{ => en_US}/menu-home.gif (100%) rename images/menu/{ => en_US}/menu-licensesinprogress-on.gif (100%) rename images/menu/{ => en_US}/menu-licensesinprogress-over.gif (100%) rename images/menu/{ => en_US}/menu-licensesinprogress.gif (100%) rename images/menu/{ => en_US}/menu-newlicense-on.gif (100%) rename images/menu/{ => en_US}/menu-newlicense-over.gif (100%) rename images/menu/{ => en_US}/menu-newlicense.gif (100%) create mode 100644 images/menu/fr_FR/menu-admin-on.gif create mode 100644 images/menu/fr_FR/menu-admin-over.gif create mode 100644 images/menu/fr_FR/menu-admin.gif create mode 100644 images/menu/fr_FR/menu-calendar-on.gif create mode 100644 images/menu/fr_FR/menu-calendar-over.gif create mode 100644 images/menu/fr_FR/menu-calendar.gif create mode 100644 images/menu/fr_FR/menu-expressioncomparison-on.gif create mode 100644 images/menu/fr_FR/menu-expressioncomparison-over.gif create mode 100644 images/menu/fr_FR/menu-expressioncomparison.gif create mode 100644 images/menu/fr_FR/menu-home-on.gif create mode 100644 images/menu/fr_FR/menu-home-over.gif create mode 100644 images/menu/fr_FR/menu-home.gif create mode 100644 images/menu/fr_FR/menu-licensesinprogress-on.gif create mode 100644 images/menu/fr_FR/menu-licensesinprogress-over.gif create mode 100644 images/menu/fr_FR/menu-licensesinprogress.gif create mode 100644 images/menu/fr_FR/menu-newlicense-on.gif create mode 100644 images/menu/fr_FR/menu-newlicense-over.gif create mode 100644 images/menu/fr_FR/menu-newlicense.gif diff --git a/images/change/coral-change.gif b/images/change/en_US/coral-change.gif similarity index 100% rename from images/change/coral-change.gif rename to images/change/en_US/coral-change.gif diff --git a/images/change/fr_FR/coral-change.gif b/images/change/fr_FR/coral-change.gif new file mode 100644 index 0000000000000000000000000000000000000000..47c3ce460053555da4d82dc5d2f7015ad2be7fd5 GIT binary patch literal 1139 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

      Di_2(P+-B@t$(ZTy~ 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 Jy$u5a>OV(`NGbpT literal 0 HcmV?d00001 diff --git a/images/menu/fr_FR/menu-expressioncomparison-over.gif b/images/menu/fr_FR/menu-expressioncomparison-over.gif new file mode 100644 index 0000000000000000000000000000000000000000..29aac1c473d233e034581472e133abc6d6403f88 GIT binary patch literal 1322 zcmd6k`&Uv20Dv!ek?V_*rRm8Px-?z6s98qRhRjT_FGRA34{j;N$_GA&%_RbYIv=Ph zrcDvih;rg98$M<(HFwHvX)5KkWIigI(;Z*iiJkUW^!@Pt{GIb1^YuPNI@1q01G4~7 zTU#3!7uVR>I59Dio13fG>t|+WR#sN}`uft-(<37zA3b`c(P*SnX<%SrQc_Y-P*6-v z42?$Pa5(Gh>seV@si~=4E;k|~A}T6sadGkD#fvR1Ev2QUbUHmGB!taoS5;NDx3`}= zcP=9%~^?v9U-XD}EE2?e6Q`!8*4Eb2($a#1 zgXMDh($bQ_UA9Zfb66ZM)rm=O;}^XIJ;nJ$HM5x!2b}P-lC< z_Wr|WSC~BXM1|XKW9qcenq+efCqiRk*a+1C!gJTqupfkJgnLLUi)!68v5H+sNYG z1WBgGk+^w_4RL7R5`{7JZz}fQaveQ4)5$su)57hH<NXtqd4$nxKkIw`@Z?PAY^BF;NTv-DV?Sar0ID3jfh*m+ z^{krs&x;DXqeIJSZXHaj(V|;VhA^5@X-P7X1IWk$Ktiy!XeJzCTeS;O;P&ZYwC-PV zCBe>#P(UDBH20wGaFjEtSOW0ea(Vdt%kLa8^Eo&jzKCLJEu-Mf_V#&Y1K_wbM7Dce zqBAgowN@PYl06}eEI&ld+;0 zx(mPzH6}VH5z&awL$hyf&S@9)!U)<#19~Al1(BM`f|V6{{5_oNV)M7|VRdGlRsao} z*z6)h5TGqP?{d;gyd`mdnu>hZB=a$`I7^{r@otw9cF=ddq?+4EvQIfIuqgifo}OPQ z_8D9q#C%yU$xem0Zv(g=yAIx}C&%_PljTdV#!e_--3Uu&EYwpxP4jGb(=`~%h@@!4 zi*kW9>NV2U`OtS(gn^K~S1sP;UQtht>PmnIIF$*A_dx{4FqHY4oo~uIis1WF`tp%K9;1y@T>fmT=?bkLFvNChA09)^ z{)O-l-^?+>rK@{!#A(`HEG^@u&W%$b{PpQjvcAm)asOmxoPE7vMH|zuUwOtEa9w?# ZJQlk;$(?Ih{XKnEzdFVH))E3d{sS-14G91M literal 0 HcmV?d00001 diff --git a/images/menu/fr_FR/menu-expressioncomparison.gif b/images/menu/fr_FR/menu-expressioncomparison.gif new file mode 100644 index 0000000000000000000000000000000000000000..d23b65b90fb944d42eaff942349551fe71e1b3c9 GIT binary patch literal 1323 zcmchU{X5eM0KmVSZ8oG~*Kv}O$MrH<+H*E9J=+i~mqpmbgCpDcyb@jEcF;wenbeA|nZ>0ga9#A0Rt<4H14ajRdSRjYAIlWj zx6^gb8MQ+%=E{4YEH1CCeE2l-asg_3aHUHhUfg-$s(O#4-9N9HbG=vEJGQq-87yqm zP0mLYcjn#IZHMa1d&cfRpIu)4=*g?EyFXsqt=}zfFHjC2s_b1@S_vyse*XNKB4}El zRwHPAc&uh%2frbw<6j9Q-GryT3YV*!%gqnu%8MWe$5wEOz zlgZ?GvIh9yaalq9*Cc%LmnVR^31su2EPi&5AU7}n{Dq4JLXlWfSahklGV@Ym#8lnrv1%<-G>_=1LDaX;a z=N*Me)%OG|1Z)#^p2{PbS;uczP+=4)`yrA=lul7(K?U&C7ztK=ef|gWR=hB?jX<=+ z*%Jp3uY(~?eKsYGy*JndPNN$$FDO%*;s4922{Jg9d7|vBkh@5`XKm$7IGj!kfrSN3 z`>i5WZ&W-K%MUtg(EaKISXv>5r;Fz(DX*~c4E$HiJhPbTfcEp*zX5)H7cRzcfd|B%2iI$Gpq0!iqSgH#Qa|&DJ`E{a#_~H4L z^+AJgGf3?R>1K;0)j9hF8a0_U;iiFu`$hpOk3&L3@1&8j>&&r-!C;K=t@BY{Y6(c@ zsYn92MJk!f*E@g!m#qyL&o$=aq~H1oD|zO0Cew`KuEg27z_Hv){3187z$88gGw6I4 zr}*HJNjzVLhvQYFnLn$W_KQ$QNnwTi_?vI;+G#_76cHC$wGS3Oh5%wi8rW69nK%ca zNZX56i58|t@X}J8x(h?(U}-p~2}6K6GN~{q$x6FP05^K*4QCtUWI(V5o+<=Wx*!mc zrsUd3IYm8w4p}l<NJK@Ig9$=NIk889*|H*1B0 zlY2He0_jfM2ME=E$$bY?Z~QYe8ZC2oaEfg6U=G1K_qK#2zz|fNC}A~_nnW26eAJ=* zlkJ{^M8_Yyyk<79P%%C{Apx|uvH`QTEGfdA#pMPHFj&Xq(UjLieCPNlJ`OQ)3*sGy zlPR{u!E7f6e>nV|ayF{{r)`?z@VEYxA~>qz5UA|WUXJ-~gQ?|BlD9Lmq#s%{Q|E3? zR;X=hB%5xeW8kL&iB3ha-4g5jVrled)-&y6PPKe_>`2Sp@)K^qhw*9ZXtMEH`YXBd RuQSFu<2YzO&%gt|{{n4MJ7oX> literal 0 HcmV?d00001 diff --git a/images/menu/fr_FR/menu-home-on.gif b/images/menu/fr_FR/menu-home-on.gif new file mode 100644 index 0000000000000000000000000000000000000000..d954f0a2da6dcbc4ae72910d8fdb85b906cb49ff GIT binary patch literal 806 zcmZ?wbhEHb3}et>c*el6;_QRhpTA#w{=skIv4oYUzyAC^=h&Uo58ga{`=w#W<-!f; zt!EwDdilwLTQBddoG-*3GBJn8to-XnMNwp{xB^Y@jP zpZbp8IduO`^y;&lu0MbO{nwHUkJC3^NL+XBweaOug@ zPu>SFKlSpx1CxJFz_9s^k&yjGIvsdu(v2~Hvkr8TP zW@TgZVQymKc*n!SSkUgk$f(A~!YOberGcS|rGt0%HqWE2q8@j4Iu|~4VdZJz5s@%x z;ACiJWaBBBaNtP;0|%d4&ZZ3~8yN&y6(*dxd|9B^AyGmreRAT-$;}c5iYmbi8x}W- z7z76NJX*%;IOEQS1Vv6xH6yO6ET>u=E<5s``|AASi^5Ho(B`XgTMwqREnt_N@j`1HHD=i47&bu5|Ixagll=M z-E#~!6{-vCO<@o;VZ6=k6eKE;HS@rH>&r*(uzD2iVh}#!CT}Ep?((X&&o3c*el6e*OBlZ{Nnn#ofGlGcPZ1@#4kbzI{7?{`}*|k85gby1Ke{ z?b_w%=Xdnz(fs`U>C>lw`SRt)jT@gneR}!w<*i${UcY|r@9#fj#*Ddh=O!m7-??)q zD=X{t>C=Dy{CWTW{gER_E?l^3UfyLWHfwrz!lg)?W)3=a=qxNu=zU0r8qXMcbHzJ2>vty)!GU48fN-E-&8 z_4fAW+1^*4Q**@`T6tb|NsAeeSH~*4p98b0(Ptphy=w6 z1N;95x2EQn*0%PJ&aUpB-oE|`6DLicGIiSY88c_io-=pe`~?daEnc#8+42=DSFK*N zcHR07>y*_bH!k2&5t0(t?_y+|&%o$*Xugw`FrS#YrgH}u8yo+^qjOaSMVJgUq)h~j z#M*e-pIkXShf|c>(81MJ%h*O#iK&H&jg{5)s~Zc)J8l-nf_4SQMkQ7jUWo*k0}M?p z9lWczaUNk6lex3=b%A1Y8%qn9gn+^V4u)1n7M_{~2bMH2aPX;_Y`SowkwK7MVZw>a z!Q8zLg%VonlM_!)ZWa?!R0)3Au((M`#517hks6y^*OLPc2aonEIdV;9iE44U?8tkL z(`xqzg-F)W=BsgU1CO*RunTm((O^kfvY?t_fm*B=$3g`b|85^;k?X?DoUV2ppB$HX z^g3}cEs`};SQ^5h>n|sf`Jh3tmdDyX$6!;TI-8>38i6g0vzeWO9Qm?V9++=^`N$pC wfPz~Nf=Ars#U#&NUbXi5g~i_U{r2wq`ufJ^?EB~T?*9J%!Qt+3Q4R)c097X{_y7O^ literal 0 HcmV?d00001 diff --git a/images/menu/fr_FR/menu-home.gif b/images/menu/fr_FR/menu-home.gif new file mode 100644 index 0000000000000000000000000000000000000000..acd8f90202594d44e6383ea704fa74fce9fed011 GIT binary patch literal 806 zcmZ?wbhEHb3}et>c*el6aNm_zAHH6G@XDfTgMaU~$y?8T{r>Ctji>ityf0aJC~5j0 z+45EEj^EsU{(j5q6K)fBUU>ZW(vx?Nz1u&2`_;7NLd}M=auuu2K711~`@o}jU#1O zi-~)$B`r8&(Y_^W&cWY*{_el=+`N7B`>#I@n>V&^zjXKYr|-Z1Oxb_^)#vXEkKYNH zw)gpmZwAd9o%(jX`}*_s=O3FdJ~C+9ShMlmj;l}BoPBWl>ARo5|DL-4`sw?xc`Hsl z`|vG)<;k~Se*FLcU%G51!{7soKUu(z(gBg6IALJ_-{9BO+|t_C-qG3B-P7CGKVjme z$y26In?7Uatl4ws&YQnr;iAP$mM&YqV&$sUYu2t?zhRw{f#Jpl+|qV}l5$;)Z1Wiy z{SM8SQI_Nv)9}&h;ACUtTX=M?qqu;Lle>_ju!&e3FZ+`#hv!ImsA)?1`r7N+dN~`n zFtf3;`Z71MaJ=JTVJv8OU~E)lW#JTfkkY`=#L~gLdYh+fE1&$Goz;O0U0HZqxFjSD z7H~4OGP3cMOgQkQfq{chtz^@MlZ_05tO^rOTn^^!b?}$aN}rr~a&ohTiK0sI!iL37 zA|`QO%QUD$A`Fhs%z<=e|0>_@Z!=CA9f!+}(>U9ShinXEkWB zBrI7_&9Fc%)~jQ!FpK|eA7zp2mzgAe8#pc{E83+UFM*d(ZdV ayX))g8=JH5pWD0p`}+rnyTe5}7_0&1#7NWt literal 0 HcmV?d00001 diff --git a/images/menu/fr_FR/menu-licensesinprogress-on.gif b/images/menu/fr_FR/menu-licensesinprogress-on.gif new file mode 100644 index 0000000000000000000000000000000000000000..fe3a06bd7599817c8e57ee7c8b0f80548f6e5272 GIT binary patch literal 794 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 literal 0 HcmV?d00001 diff --git a/images/menu/fr_FR/menu-newlicense-over.gif b/images/menu/fr_FR/menu-newlicense-over.gif new file mode 100644 index 0000000000000000000000000000000000000000..0926557c2ed0ab99a74b2e55ab15fc09f29b51f2 GIT binary patch literal 1002 zcmZ?wbhEHbY+=w~c*el6c=6)(>(}4BdGqMeqj7O@d3kx?zI}W9_H9>J*ZK43A3uIv zQ&Y2R*RJW)r~mu+@8idhPoF-$ckkZayLUf)_;BOKjW=)JoI7{!<;#~BFJ8QS`SObw zFB%#e{{H=2T3Y(<-Mi<{pGQPQR8>{|{{1^BC@3>C^U9Sgxw*L&6&1H{-~RgbYez>% zPEO9RU%#F_d2;&n>Ehzz!-o&=+qduG!-sWsb-}^GXV0E(ZEZbt=ulHrQ%Xuoetv#x zYHE6V`mI~Hva+&Xy?PZL9ewA{o%;Iv|NsB{`uZ{qHK6#D1?*%U5DAJC2KN6AE=|oX zt!?ccon75My?y-?CQh0>W$Lu)GiJ`3J!kH``3n{J9h5cy=U*fJ?v~P&I}W{Stc+syByiyA}t~%U@tBp#i`cL!N$frg~OTksSj5=Y;N0$@ z=>yNw}7 z#XzM&A&EIwufn56b7F_qVL^)rn+`BeV&dsgezI|912c<~S;q{chHFz@q35x^IOlz$z)84czE2IqhiX+8QY`!Bs%#Q z<;Utz-k}AWspsvQ^9!5RE1r6S> zMZaGRXXy}gi216pAih{g@S<3!W}OnVm5j@Urd&e-rCaGu4a|N{N~T{HxakNQUX2pt zUD#kDdoDf3-B2<1h@6$%+>9$e%6nN-HPo*tFmegHTxe!7nDD@(=*JhOS>~yqg8G?0 mEPeTGcEK^t=W|M~Wj>!<@oeSuc{Sf&KA+#fCgr8TU=0A$?1sSr literal 0 HcmV?d00001 diff --git a/images/menu/fr_FR/menu-newlicense.gif b/images/menu/fr_FR/menu-newlicense.gif new file mode 100644 index 0000000000000000000000000000000000000000..3ed7d9ad8b9005b6918bcf2fff9b76bc81bc1985 GIT binary patch literal 1004 zcmZ?wbhEHbY+=w~c*ejmdF#1_`>tGm@XDfT!|wC<{d>2)`tY@6;i0eJf8BraK56=% z<2RnJJASie^@+D%e*F9Q|KZy&2XDQ&^z_}UPv4K-eHAnJ(4W8m{HN}H{^8q^+b^#? zd;jM1k9)5_TXt+wu3qCkd3XH$!=JwY+I#)knzQ#^`*;5Q{de=lM-DyP&pvz;HRqsn z-;OI!-(Pz2?!>)ULDToSPuTVM-@mlQNB7@+u2{AD&6giHUwqW8U-#?J->c8wfBx}1 zdhWqT@4j4k{PxhT7mwb3ef<8bP1jc4#tnC0f4=+rQ}V(i_TAe9Um!gBU3OWC6QQ2SkG6gn|8kgLhMNOKV$uM`u@ePj6rUgo%?TPnkMx`iz;g zX3v>BZ~lUXixw|gx@`H1m8({-S-WoihK-vxZ`rzS`;MKvcJJA{Zx0(sixcxgP;_==5>v9+;UalRl~qhDQK5s;ikW@d z73Bs$hm(^vr_Ts!GP=?xEgVp?f}xSEhog-lM`nRagF+H>tX9R2mY0({v<~wcJlNF0 zIEhK1L;1Gee4dLGi@y{Xly*xKb7Z$MzCT2RvAMfd6%0;3t3b+E!llfqvibJn9s??XTjNdMW97$yMl%=auj+ENl&{X(L3QJ`_} zm!K&NcPKQoxMwV2 isAdmin()){ ?> - .gif" hover="images/menu/menu-home-over.gif" class="rollover" />.gif" hover="images/menu/menu-licensesinprogress-over.gif" class="rollover" />.gif" hover="images/menu/menu-expressioncomparison-over.gif" class="rollover" />settings->resourcesModule == 'Y') && (strlen($config->settings->resourcesDatabaseName) > 0)) { ?>.gif" hover="images/menu/menu-calendar-over.gif" class="rollover" />.gif' hover="images/menu/menu-admin-over.gif" id="menu-last" class="rollover" />.gif' hover="images/menu/menu-end-over.gif" id="menu-end" /> + .gif" hover="images/menu//menu-home-over.gif" class="rollover" />.gif" hover="images/menu//menu-licensesinprogress-over.gif" class="rollover" />.gif" hover="images/menu//menu-expressioncomparison-over.gif" class="rollover" />settings->resourcesModule == 'Y') && (strlen($config->settings->resourcesDatabaseName) > 0)) { ?>.gif" hover="images/menu//menu-calendar-over.gif" class="rollover" />.gif' hover="images/menu//menu-admin-over.gif" id="menu-last" class="rollover" />.gif' hover="images/menu/menu-end-over.gif" id="menu-end" /> canEdit()){ ?> - .gif" hover="images/menu/menu-home-over.gif" class="rollover" />.gif" hover="images/menu/menu-licensesinprogress-over.gif" class="rollover" />.gif" hover="images/menu/menu-expressioncomparison-over.gif" id="menu-last" class="rollover" />settings->resourcesModule == 'Y') && (strlen($config->settings->resourcesDatabaseName) > 0)) { ?>.gif" hover="images/menu/menu-calendar-over.gif" class="rollover" /> + .gif" hover="images/menu//menu-home-over.gif" class="rollover" />.gif" hover="images/menu//menu-licensesinprogress-over.gif" class="rollover" />.gif" hover="images/menu//menu-expressioncomparison-over.gif" id="menu-last" class="rollover" />settings->resourcesModule == 'Y') && (strlen($config->settings->resourcesDatabaseName) > 0)) { ?>.gif" hover="images/menu//menu-calendar-over.gif" class="rollover" /> .gif' hover="images/menu/menu-end-over.gif" id="menu-end" /> - .gif" hover="images/menu/menu-home-over.gif" class="rollover" />.gif" hover="images/menu/menu-licensesinprogress-over.gif" class="rollover" />.gif" hover="images/menu/menu-expressioncomparison-over.gif" class="rollover" />settings->resourcesModule == 'Y') && (strlen($config->settings->resourcesDatabaseName) > 0)) { ?>.gif" hover="images/menu/menu-calendar-over.gif" class="rollover" />.gif' hover="images/menu/menu-admin-over.gif" id="menu-last" class="rollover" />.gif' hover="images/menu/menu-end-over.gif" id="menu-end" /> + .gif" hover="images/menu//menu-home-over.gif" class="rollover" />.gif" hover="images/menu//menu-licensesinprogress-over.gif" class="rollover" />.gif" hover="images/menu//menu-expressioncomparison-over.gif" class="rollover" />settings->resourcesModule == 'Y') && (strlen($config->settings->resourcesDatabaseName) > 0)) { ?>.gif" hover="images/menu//menu-calendar-over.gif" class="rollover" />.gif' hover="images/menu//menu-admin-over.gif" id="menu-last" class="rollover" />.gif' hover="images/menu/menu-end-over.gif" id="menu-end" /> From 80a07f187a965ba79e9119491939790b7d46b1bc Mon Sep 17 00:00:00 2001 From: Bradley Droubay Date: Tue, 15 Mar 2016 08:55:18 -0600 Subject: [PATCH 16/55] Fixed Resources in Change Module --- templates/header.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/header.php b/templates/header.php index 5640698..4d15a37 100644 --- a/templates/header.php +++ b/templates/header.php @@ -146,9 +146,9 @@

    • settings->licensingModule == 'Y') { + if ($config->settings->resourcesModule == 'Y') { ?> -
    • +
    • settings->organizationsModule == 'Y') { From 866234be5111128fbfccd9b91117d022f26d5d1a Mon Sep 17 00:00:00 2001 From: Ryan Chisum Date: Wed, 30 Mar 2016 12:02:41 -0600 Subject: [PATCH 17/55] Added Classes to Buttons --- ajax_forms.php | 45 ++++++++++++------------ css/style.css | 94 ++++++++++++++++++++++++++++++++++---------------- 2 files changed, 88 insertions(+), 51 deletions(-) diff --git a/ajax_forms.php b/ajax_forms.php index ab179c0..e6bff58 100644 --- a/ajax_forms.php +++ b/ajax_forms.php @@ -110,8 +110,8 @@ - - + + @@ -267,8 +267,8 @@ -   -                                 + +
      @@ -364,9 +364,10 @@ + - - + + @@ -486,7 +487,7 @@ -

      +

      @@ -635,8 +636,8 @@ - - + +
      @@ -749,7 +750,7 @@ -

      ; return false'> +

      ; return false' class='cancel-button'> '> @@ -827,8 +828,8 @@ - - + + @@ -861,14 +862,14 @@ shortName . "' style='width:190px;'/>"._("update").""; + echo ""._("update").""; ?> -

      +

@@ -960,8 +961,8 @@
"; }?> -   -            " onclick="window.parent.tb_remove(); return false" id='update-user-cancel'> + + " onclick="window.parent.tb_remove(); return false" id='update-user-cancel' class='cancel-button'> @@ -1006,8 +1007,8 @@ - - + +
@@ -1114,8 +1115,8 @@ - - + +
@@ -1168,8 +1169,8 @@ - - + + diff --git a/css/style.css b/css/style.css index 6639389..1b1f4f8 100644 --- a/css/style.css +++ b/css/style.css @@ -917,7 +917,7 @@ table.surroundBox table.noBorder { margin: 15px !important; } -#div_licenseForm table.thickboxTable input[type="button"] { +/*#div_licenseForm table.thickboxTable input[type="button"] { color: #FFFFFF; font-family: "Arial", sans-serif; font-size: 11px; @@ -926,7 +926,7 @@ table.surroundBox table.noBorder { border: none; padding: 5px 10px; text-transform: capitalize; -} +}*/ /*--- My Queue Page Side Menu ---*/ @@ -1104,7 +1104,7 @@ table.thickboxTable .headerText { /*--- Adjust Document Upload Form Modal Window ---*/ -#div_uploadDoc input#submitDocument { +/*#div_uploadDoc input#submitDocument { color: #FFFFFF; font-family: "Arial", sans-serif; font-size: 11px; @@ -1131,12 +1131,11 @@ table.thickboxTable .headerText { text-transform: capitalize; margin-left: 5px; position: relative; - left: -82px; } #div_uploadDoc input[value=cancel]:hover { cursor: pointer; -} +}*/ /*--- Login Form Modal Window ---*/ @@ -1190,7 +1189,7 @@ table.thickboxTable .headerText { /*--- Adjust Document Upload Form Modal Window ---*/ -#div_expressionForm input#submitExpression { +/*#div_expressionForm input#submitExpression { color: #FFFFFF; font-family: "Arial", sans-serif; font-size: 11px; @@ -1221,11 +1220,11 @@ table.thickboxTable .headerText { #div_expressionForm input[value=cancel]:hover { cursor: pointer; -} +}*/ /*--- Adjust Terms Tool Resource Link Form Modal Window ---*/ -#div_sfxForm input#submitSFX { +/*#div_sfxForm input#submitSFX { color: #FFFFFF; font-family: "Arial", sans-serif; font-size: 11px; @@ -1252,16 +1251,15 @@ table.thickboxTable .headerText { text-transform: capitalize; margin-left: 5px; position: relative; - left: -135px; } #div_sfxForm input[value=cancel]:hover { cursor: pointer; -} +}*/ /*--- Adjust Attachments Form Modal Window ---*/ -#div_attachmentForm input#submitAttachment { +/*#div_attachmentForm input#submitAttachment { color: #FFFFFF; font-family: "Arial", sans-serif; font-size: 11px; @@ -1292,11 +1290,11 @@ table.thickboxTable .headerText { #div_attachmentForm input[value=cancel]:hover { cursor: pointer; -} +}*/ /*--- Adjust Update User/Qualifier/ Form Modal Window ---*/ -#div_updateForm input[value=Update] { +/*#div_updateForm input[value=Update] { color: #FFFFFF; font-family: "Arial", sans-serif; font-size: 11px; @@ -1341,15 +1339,13 @@ table.thickboxTable .headerText { text-transform: capitalize; margin-left: 5px; position: relative; - left: 4px; - top: -16px; } #div_updateForm input#update-user-cancel:hover { cursor: pointer; -} +}*/ -#div_updateForm input#update-qualifier-cancel { +/*#div_updateForm input#update-qualifier-cancel { color: #FFFFFF; font-family: "Arial", sans-serif; font-size: 11px; @@ -1364,11 +1360,11 @@ table.thickboxTable .headerText { #div_updateForm input#update-qualifier-cancel:hover { cursor: pointer; -} +}*/ /*--- Adjust Update Expression Types Form Modal Window ---*/ -#div_updateForm input#update-expression-type { +/*#div_updateForm input#update-expression-type { color: #FFFFFF; font-family: "Arial", sans-serif; font-size: 11px; @@ -1401,11 +1397,11 @@ table.thickboxTable .headerText { #div_updateForm input#cancel-expression-type:hover { cursor: pointer; -} +}*/ /*--- Adjust Edit Calendar Settings Form Modal Window ---*/ -#div_updateForm input[value=Edit] { +/*#div_updateForm input[value=Edit] { color: #FFFFFF; font-family: "Arial", sans-serif; font-size: 11px; @@ -1421,11 +1417,11 @@ table.thickboxTable .headerText { #div_updateForm input[value=Edit]:hover { cursor: pointer; -} +}*/ /*--- Add New User Modal Window ---*/ -#div_updateForm input[value=Add\ New] { +/*#div_updateForm input[value=Add\ New] { color: #FFFFFF; font-family: "Arial", sans-serif; font-size: 11px; @@ -1440,11 +1436,11 @@ table.thickboxTable .headerText { #div_updateForm input[value=Add\ New]:hover { cursor: pointer; -} +}*/ /*--- Update User Modal Window (Edit Link) ---*/ -#div_updateForm a#updateButton { +/*#div_updateForm a#updateButton { color: #FFFFFF; font-family: "Arial", sans-serif; font-size: 11px; @@ -1458,11 +1454,11 @@ table.thickboxTable .headerText { #div_updateForm a#updateButton:hover { cursor: pointer; -} +}*/ /*--- Close Buttons in All Forms ---*/ -#div_updateForm a#closeButton { +/*#div_updateForm a#closeButton { color: #FFFFFF; font-family: "Arial", sans-serif; font-size: 11px; @@ -1517,7 +1513,7 @@ table.thickboxTable .headerText { #div_expressionNotesForm a#closeButton:hover { cursor: pointer; -} +}*/ /*--- Capitalize Add Links ---*/ @@ -1544,7 +1540,7 @@ select#expressionTypeID { @-moz-document url-prefix() { #div_updateForm input#cancel-expression-type { - left: -110px; + /*left: -110px;*/ } } @@ -1589,6 +1585,46 @@ select#lang { background-color: #fff; } +/*--- Consistentcy for Form Buttons ---*/ + +.submit-button, +.cancel-button, +.save-button + { + color: #FFFFFF; + font-family: "Arial", sans-serif; + font-size: 11px; + font-weight: normal; + background: #1b76a9; + border: none; + padding: 5px 10px; + text-transform: capitalize; + margin-left: 8px; + min-width: 60px; + margin-top: 10px; +} + +.submit-button:hover, +.cancel-button:hover, +.save-button { + cursor: pointer; +} + +.submit-button { + margin-left: 0; +} + +#TB_ajaxContent table.thickboxTable tr:last-child { + display: inline-block; +} + +a.submit-button, +a.cancel-button, +a.save-button + { + color: #FFFFFF !important; + text-decoration: none !important; + } #setLanguage { vertical-align: middle; } From de4f1ef681bca4a575e2b47cba0f3d387e4cde11 Mon Sep 17 00:00:00 2001 From: Bradley Droubay Date: Mon, 4 Apr 2016 14:25:32 -0600 Subject: [PATCH 18/55] French Updates --- LangCodes.php | 4 ++-- images/change/fr_FR/coral-change.gif | Bin 1139 -> 1185 bytes images/menu/fr_FR/menu-admin-on.gif | Bin 929 -> 1029 bytes images/menu/fr_FR/menu-admin-over.gif | Bin 928 -> 1027 bytes images/menu/fr_FR/menu-admin.gif | Bin 929 -> 1029 bytes 5 files changed, 2 insertions(+), 2 deletions(-) diff --git a/LangCodes.php b/LangCodes.php index 2d58bc7..c352973 100644 --- a/LangCodes.php +++ b/LangCodes.php @@ -14,8 +14,8 @@ public function getLanguage($code){ } public function getNameLang($code_lang){ $name_lang=array( - 'fr'=>_('French'), - 'en'=>_('English') + 'fr'=>'Français', + 'en'=>'English' ); return $name_lang[$code_lang]; } diff --git a/images/change/fr_FR/coral-change.gif b/images/change/fr_FR/coral-change.gif index 47c3ce460053555da4d82dc5d2f7015ad2be7fd5..0914266ae07695f1fb3f5359bb9f5ea4ecabf38e 100644 GIT binary patch delta 1026 zcmV+d1pWK-2%!moM@dFFIbo&%C;;XF0HMCr>hSf`;OdjL&fn>_%s{QdrLsmV-~ypp`sUY^2Im%fFy(Y4a!_4)hR=<$-h)=84P zF@v$o3t`{kt>fkAhtjP&;-wuJE;yDTVO9u$fdqrT9oQ$1Tqtws z)TxqSu*VERP*_;-K!`v-L*E2!12`bSHUbC21fU1TfC51aR)2!IIl#a+i(m+V0VoK- zOMeH1f;l;;z))@ne6sZEFN^}00Ro&0&@GHnuj&%049ZUwhAb{9fYA{qLWv9v{|One zSSV!}24EN@Fwh`O)O-O9#H8m{@VuP|{3*yACTO9>1HxznkU(pg0s;Cq4VnNifzEjs zllwMcZ#TPKi+_Rv8)iX(Z~_P`VaPlhw z&50E>FfeFAzT|=$XiP8;Z_L7koRSlde1P`q1n}}Bu(j*gblfc_{%%N$1S^7gY#1@= zfdvg22+{!+25nFhQ`r?jQDfvBfPgkb$>iQ@RXL>qgn#Xv14d+oAV5?A0DNQ6YMVvo z6o(sPBnScld^3oL5~>E4QzPDlhzUOw(Lxj;SW)@5VnY1CSJV0^d0IRbRmz-sU@<_HX5 za4^Ls4u1p@0R zPDk-X)k$X>cT|H))e~NqWoFvbPgr7QSyDA=!$X=_+XP^vDGu~1NDW4$vKW2N#QO-V w#Zo8ly^eqz6ukKM>+in+2Q2Ww1Q%@Z!3Za;@WKo??C`@7M=bHgrvw53J9Y!;U;qFB delta 980 zcmV;_11tQY3G)blM@dFFIboUrC;;XF0HMCr>hSe+p~Bzj?@x`kyU*YC_xfU&ywl+7 z$JphQwaz$#u&&41gsaFLcc~qBsvdZ%k-gUO_WB@stKseRA9<_NEnQQkT9rfT_vf>m+!mOq9HTj=R(`gRz{$+9`UdB6p{V zxYE1Tx-s+9I)IEf( z-0Jd^Edgx-nv6v`bveEvJOm;FEd^!D+Iv6fGAgo7X}A1Xv4G~k}0ZV0j=;1(d;fCFIy$OB_QfS?2_!GG9PU?3X+h7}oP3t*Fw z%$D;8fSDKOfKo6C9ujz}G)#et=L7)6*AvW7P#3x=kpSjOm7d3K}p7(t)C&1(M~%Fd#57 z4B-O>U<1Z)+xS%uZv^Nh;5sV}!cR*D;f9$Y6NXXUMSt9Qqf>_86&9K|3#xQT3S1On z!U#uHGC>s-fM7#GK3ss9LxULBpH~ScP{33KGFQ%Uf(#}A0|O+|9C3$KSYgn0*ZHX3 zR~PXU*M|fU*@y}~ut0((4ge8>1Q}$ojueF~AQMai$b?TuUg<_oj|Td+mxUkxbQx}m zZP-mw6n_@DWC4{mH5~#05I{gn1_Gv(R^FUrX8^c`l0*z8(BK3G8aPl00XS)sp+1DA zG++YARfu7yi*l7seo_kMQz1$gSY1<3MHNP1OO>;LsMs+24Nt3<;((@tc(6k%=fK3w zvWX-Rz(WWi$LzF*IOUSE)Ml&gw%m5>?YH2DD;4gzn+|=(+UT6d++eB8fVk66p~m(3`>4&} z;qCOx;Oud*&$ZL!j=$H0zuDmL_3!ukvDfFV)#kO?=(O1AJe$Kwp~qLL%RZdMa<|k> zqsY12>0YeOjKthKn#1_}{nY95uh!;uxYVxI=8?wTVy@3@VXe+iq{zSC>*ewHs?+7= z^7liY#YmyY*z5Dx>+_t<;j7f;`uzPqo5RoM@cjM$_xt^a!PBT&vB4zu9@Z*2LlM&E@dy_4)t*|2dh$k@1|80S1$e0Sy6w zlbZoRf4aN8y{t114?`Y<8Y&@&0SAZx0E|cj%mRoD28{*_NeBV1Ko%nqC4v2(-rCc>?UG-fY?ge_)#+xSh9~dY`n1#0xznk--NNM6d!O2@JKI zga&*pEHr#bqo=WR|C0GE2nPh;4>87t>%bdpCfVk83`TMBN;7*~& z;qCOx;Ow>2YVXe+=g}~WPq{#dI{z#$6dAinv zzuD#T_s!+-tJLLVug{#!;n(Z)#NqAy{r+UH&$ij=T&vAKo5TA2{a>xl?DhG(-0IKf z@b~-u+|RH_^#FFs?+7a-s}JW|2dh$k@1|80S1$e0Sy6g zlbZoRf2ubQ5i1viAx0L50tScx0E|ck$N`892(Ts|MH4`RA0kK(h6M%&4Ts5}1xN$1 zL=r9-AW0M(5j7`<0Sfoy%AN%0unrSAW{4Qk!H1AT2n-P5CoM?<0Z0T0P$nP&!~_Ep zAiyClJFTn ziUt@AFd#swfdw52d`y5~DO8f?#3?w&Z=?Zq2apsu$30mhD3@ xfS}0Gf`Niu(2D~U=py5cG}dV2jX3706h}kvawf06UZvW&{8L diff --git a/images/menu/fr_FR/menu-admin-over.gif b/images/menu/fr_FR/menu-admin-over.gif index d0ddba493ef1e12efd1f9702943978ec5bdbc3cb..3dfb0f7f6e417ba52b4ecd4cb681ae490c198166 100644 GIT binary patch delta 796 zcmV+%1LORl2ZIQIM@dFFIbnbRC;;XF0NL5u?d|Qw#l@qeqi$|)ii(O}US9V0_OGw6 z+v~Pft(S*w|81QvCeFMt7?uCVg+uPgv`ue%K zxu&M3b8~ZGU|?EWT2@w8|Ns9@O-+&EtdZ~tlZ^ol0f3X60YHDcyS%-uB@hV|6@vyS zABO=4hyVbLLIcbKhzbUc1`0z60j?<$4#KfDp3|kHREi zz+_*CH9LX=!a)d!35X01S>UX}!XXJrE)W!8^N^V>2Q+__`q|k`1wsJW8*=xvXF~7_ zG>o>*t3A{WoC=B^%7ud-GOl`vP{?agn*x3%XEGy;`E#4ZFa2!R0X zvI7U;J!G~3ZXSgc0JXtFb^{+U(7-`~(B6*p5LnJOxjEg2yW-?rrsy*384cELv#Sb10uvgNCHDG7vTZUz~kR@0EYHpX`cz8(0X&h zlMQ#Bm8a5rUkMffVI~<+VS4L%qJj`G5I4kN2_ZZnfenM8#-D`+C;*a3D?&G5fTB4B zBWN|*G?W1#HNaguLL7j=S3ogvR8mVdg&ujGn6NB@l0#Gw3gc18Mk?u~lvc`0AOJgZM`VBi delta 696 zcmV;p0!RIW2%ralM@dFFIbm=BC;;XF0NL5u#l^+#?d@)EZlj~4ii(Q%_V(lB<6d4~ zudlDq&(FHLx_o?mmzS5ly}h=!wvdpJZ*On6x3^MKQczG(n3$N@*w{}`Pmhm}ySuym z{QSVcz=45*TU%R$gM(;jX!-g1@$vDvxVUn1a#~tib8~ZAbaZsNxw+ij+_JK=Y;0`l z>FMX^=bW6JhK7dQ+uOpz!ltIC`uh4-R#t_Dg_Dz$?(XhUQBm;l@R5;``1ttL)YQt# z%3xq%adC09w6xOF(&*^u|Ns9@O-+&EtdZ~tlZ^ol0dSL>0YHDMHxLIH7lQ~X5{Ci? zhyVbLLIlVGhztm@IUNrnBZ3qeLMMg=1_lj>$)5#61F$O(KOi1M6BP#zJ%#}a_v6Z* z1n002I5IS3n8ATXi$e$u5a1_mNC5#t1PD+j-~hw}0}cqmIE2{%ApkC-1MqBtkcb7$ zoh$%AqX7gaQ96IzC?o->5;Q~zaZtepA_6ZF)EtuV89#~!7z{8VK&gQR9SM9qfM6+9 zlIFxIIL2?J0dxt36d01=t2wBnNNfkUHkGqz;}p&1m+lwQsE#5jGZ1L6cT!}^8kK>0#JW^HbekvzaE(hBIh@OMj=M~ z`7Pb~B;>lFK3IT_K!OGxHZTw>+c04Qx{~9L)_eL{>cgx_3o@A?@$3U=2bn{cd-n?y zLpXqVAR-7M?1TacNT|%*^3u)!sutWg0Kc(WBi9!ccI^G_q3j?83Yrb!LkJIaP{SaF zB`1hE1u#eekwovAwwiNN%@^GeF$n<`0uVJY8;70Q1Ry9p08!u&7xV(b1iHj1=>hSfu&)<`^&QFcDbfLmHg0S`X`k}tm z-{|jRm%PW=<*vusgsaGLs>z|p+}rB%s?6V|$=zL^!bXs}A9$*-&*2_;s?Fi-?ezF9 zfv|h8%|45^V4uUI$lM`%t1yGH;qCOO%ij0;{4<5J?DY6=N|L)Ed8@I|;hhkxEyVS_u>L-1zEP$_YsmWxb#h%66`~Ci7p~Rxc z+;ptVyVm8V$=&1b^+}PsOOv}pj<}t~+WGtaN07R!%-{C<{Qv*|8+NIY@tl*20T2Oz zlbZoRf4aN8y{sn=5H}ZtAVeOA0SAZx0E|fk%mRoC28{*^N(ce2F&aD>CV~|rNk4`K z2L}y@&7TEH1dIj;(Xc=dIU^lP9~%%yNEi~ZpkO;^o(9BYL;zYW2PKN=5K&`7h!=04L=Ef0)J~Nyq~5Y!(2Z@_>N_Hj^-DX%oRV zB?bW4Opr~$0ia0`gc7ntLXrp@a3C7s(?C?D2c{_`c|ZYy0|Cq)80vDRfwM#ZXToE* zV3|Uh2jn5ht3*H&vks5KBw)Z~Uxzh2g0f*DiG>P?3@TaRtieJh2}mvw6kxNGnJou2 zf0X*!*-QmV0N7J<_p@h0@Cr1Hw#}2(-rCc>?UG-fY?ge_)#+xSh9~dY`nHgbFYyF~JBANDu-c2@JKI zga&*pEHr#bqo=WR|C0GE2nPh;4>8fnp#*Wbl9n zJq&_ce-{>@07xRS2pxd}isn#^pw(p4PzHe10C(vmaR35e0mZ;kNiEeBdgOKDF2f2- u3UWa(4t(ItpMVA`=%9oaYUrVeCaUP7j5g}%qmV`_>7=yU*WGjkfCW^^>*EbfLoa_xho})Hs5$ z-{|kh*yXOr*$2x@}bAvs?6W*^!P@QxqGk8qsZJIc&e|@;ibvlA9$)h zi?(2&!(E=j&Ef1JdaJ0*-Y|o);qCM-fw1@b{B*3#aH+{}rpev={r*dnyY~A0(&X;O z-RUfVuVkXdN|L){p~T4E>butEbF0ei^!S~`+D(+ap2gdZyVR@9-!p}>vC!ggsmVi* zxa#uvCw;9Td8oGkh=N%{r~^}8+NIY@tl*20T2Oj zlbZoRf2uzY4<#0ZAT$++0|tly0E|fl$N`892(U6DMG`K886Qa|h6M%&4Ts5}1xW(1 zMi4e58%iD&4>&o70Sfoy%AN%0unsdwPJHmeA;geF2n-P5CrwF#0Z9f7P&Oa|!~_Bo zB*CbJnSdk!E}{eQY(bKU1rWFA>yKlJFTn ziUt@6Ffc%=fdw52d`y5~DO8f?#3?w&Z=?Zq2a*&}a^R~usH0e1NOBwc(;f9W#8;%qbda|>yOOVZsA+CC44D_w=*W zhgp*rWb#1b*$L1NGKVhrZXz|5a2NprLkL3I2?ZFCP?3@ xfS|;%f`Niq(2D~e=py5cG}dV2jX3706h}kvawf06SlJS_S|B From f0a34df6215cdee7f1f49fc880c683f5cb9e561a Mon Sep 17 00:00:00 2001 From: Bradley Droubay Date: Wed, 6 Apr 2016 08:02:25 -0600 Subject: [PATCH 19/55] New French Translations --- locale/fr_FR/LC_MESSAGES/messages.mo | Bin 21653 -> 22318 bytes locale/fr_FR/LC_MESSAGES/messages.po | 365 ++++++++++++++------------- 2 files changed, 183 insertions(+), 182 deletions(-) diff --git a/locale/fr_FR/LC_MESSAGES/messages.mo b/locale/fr_FR/LC_MESSAGES/messages.mo index b5bf2a5be48426efb18a75b9cb4328df0599539b..42979fb579d4211c0ed66e9cc992fdaad849507b 100644 GIT binary patch delta 6628 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 S{TBxzKjEleIBg>K)c*nN>m&jI delta 6171 zcmbuCd2m$q9l(Ex61mDLH{?ZxaD+rTlLZn&4hbX>k^r97$L>pbvio*x4 z&gjq1blQ$eTdmPbt<>6zI!Lsgj#KN=POYQ1It)X#qE$O;t+t=YQ_j-_1-C&5-I8(jjw z1b4#aa1WFN?~BJDf_=0fg>t~`TBSPRTqx`IKoM*|+yQT>%`3H#kJsrK4$JDIg`?pF z+7n=(3lxi84@I!Ypa_JKHWUR`!D+BDZeIdL zp%j!D$Uw2^HL#5H)h&GdfQ~!kfx30k25oRA{X5~g@LE_74?qdlr=bY?3KSQ-9rJT2 z0*!BsT(Ss?$yY)VWHp=vn_*3!k0c+rLLE=2SRY0EA}E?Kg%UhXP!7BliX}2oG`FU9ic7x>C3_x$V!>ZRiJ{}o*k6KbBD;xZvt!mk+^ZU)0rx{O z=>a$v9){xMU&G<>EqEq89=G3#`5rur{tx5!r%+jgn7+} z1kqu*6+R0k>Zi6vnk<7OXs?1YuO7+<8=z=Xm*LrPClrl#LlJBrly%oZvA}ImqWnH6mG2Kw z1R1p{5?~Ib_NZD|EBW8g$0#~}4C~q6} z2}RH}lvv2c?f$sE4@%JOhmr+1z^gc4-OI;ZIDSiH!sT!@?e$PJ+YCk1OQEFIPADc0 z;4XLzTnYaUMS!Z#$WrG+?ln~hW!!~jZ~)3aKY@7(rf1@g*P-O=`*C{&0U_hlp)6Pm z#fL31uYh8Ky-?QO8ux!6N*#DI9)AtW`uCwIG`uU?XM7j-muOu?hXhXp6bU<^XuJ)I zrk6qSy$2`2Yv6cz8x)`49gjZ-$I(6lm%ta|{x9PGvhHaAsZjPS@5cTU`B)GStcIdV z6O@fEh856;k}fwxIrtD937>&tk>{br&Kj!bx!3bUs9L zJD%_rC?@(w&!NPmBNf9}Rj<&WFMqhK-A-Cg($Wu4pQ4{%F>#V-q_W8%V>!NOSWd4A z^%pB@#umF5cnb}^WaW(Vz_-)3H#ksjbXacEHd2<+pA9_2^t`~eT>b6NwWBv@9V0b3 z&}%!keq?3S7&~n^m3s}-$eEu0$I2P=J53I>jFjnH#^8W&?o8X(LbbpQl7VC7vVm); z1x{8kTeb8I%QB>k} z)3-$)%QJk-%~)QwYAno*CYrsyc5;{5Cjx~hl+5gRRb#(vr&Y7*k7Yuo=_YsC{Y=&i z>*{ADR6APPgZC#bsn#9{@V_XK)gqQcJP@I{FyT+8#!y_SoLp-z@-_&7&3nQ6;Oxwhr1 zrmWLz_XTcjmB2_2jcvwqR^W@940muK8RP~B@Tn0v`su{{QBAwDwr9J@r$0%o({-ya z9}&fowpTBi+{M{=E@@SZt*r2mKC${-J$j9=_pe#LqQPjgP|fP?HItTW8fM^mb|@bT zdWQG_0VV!itIzg)B=D;Bb!+CArLvBLTiIo<-n6!1b%W6(At$T$1ZLW1DeClwL6}Y2 ztTQ~z&0;w(z}0p}dcxzv{qzTGzxO4H1+=sxnc4b0{X+eiDGjPQPJ~i9?r50TpnCS^ z2mt=Y6aJ&aK**$cz;}H6gBlx2|57HyTr`RZFpR$O4wm zHO`xz2n8eiN*2blR<`Ivjq6tw5?r;%Q5O_kV_2S#Rg5HVmK{pcOD|qOCof@>#Ojtq zkVw8I5i{uz-j9HWM=T|6Gq~DV!ah06O$V0mTUDfO7GGy`yZG)4>~z}7SiX^!z#LkQ z*)yb<_}emSj9eP`^I5H0qo_%!PFKIUzI<81Ipq4)zD2hb6Y{6fKh)#L4od5JO>1jV zHo42n*pAUJF({$syJjj#O7ZY0U!uDx*iXErEdBMS#+hw6%gXFzcadtN*>83yT|0-3 zJpEo%ovv!G9cPL~h7wLY%`^0k&8@?-`sL=id9#?%g(6lG{Ajm1&ibKwB_UQi9M|)N z>h?{a43<(+TvXDFW>MAjq;S;~%1Pn$jO`hN_fW|KN(d898<(1gsCM zmg0k~m)fXxYl5G@jmS(&>tn6+6Y=d*&{VFbuqxowl7jxIiN(GMNL>f5SrbKd!VB*T?-k?67a?|LiE?jJPnl2&|Y^LkmNjoPOYC;un zOvw`430N8xe5^4zfDyTcVl~73DFiJw(KpOc!+pk3!h2+izG6ewB*b^Eq#xRck|wu; zzH7tM#Vw8mF*Yw4t`)~RHnoPNI3ux!cg5-PW~g+PU>V+X?lbK zFXhEQRlIJy&mpc|YNXsAL|f#f@Db zhqX_etBh#X&=8f$Mw|yk7H$sD);rqg#9OG2Y>F@sBP_ZcQb9DNf8M^+KzogXM8ux?v_5$Ex_u_$8$MkSlZsr3{OIL&%Cc%+pOQCWDd&Y*X36D4>2BOIZ^Y~Hwx>UImvmVUFHS4Gv*hVq@2xxn)Aotf!)Nd-x7;D^$|t;Xok|e-~I@p)FxoSSf)a@7nNpmAEXbGPp`#vTaePLewBl zo$Az4zqxJlSsAVvSAVu`=4#oLqg2>a zDrr$o)pPpo6X%sqZa+`ov3=Si#E&an7{E0~!4`%(twX=D{d_%f$HcNI)YQKLR@Z-@ diff --git a/locale/fr_FR/LC_MESSAGES/messages.po b/locale/fr_FR/LC_MESSAGES/messages.po index 0cfd238..103ea32 100644 --- a/locale/fr_FR/LC_MESSAGES/messages.po +++ b/locale/fr_FR/LC_MESSAGES/messages.po @@ -9,7 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.7.5\n" +"X-Generator: Poedit 1.8.4\n" "X-Poedit-SourceCharset: UTF-8\n" "X-Poedit-Basepath: /var/www/Coral/licensing\n" "X-Poedit-SearchPath-0: .\n" @@ -39,7 +39,7 @@ msgstr "Ajouter utilisateur" #: admin.php:112 admin.php:132 admin.php:153 admin.php:167 in_progress.php:38 #: license.php:70 license.php:94 license.php:113 license.php:133 msgid "Loading..." -msgstr "Chargement..." +msgstr "Chargement en cours..." #: admin.php:52 msgid "Document Types" @@ -47,7 +47,7 @@ msgstr "Types de document" #: admin.php:53 msgid "add new document type" -msgstr "Ajouter type de document" +msgstr "Ajouter un type de document" #: admin.php:66 msgid "Expression Types" @@ -55,7 +55,7 @@ msgstr "Types d'expression" #: admin.php:67 msgid "add new expression type" -msgstr "Ajouter type d'expression" +msgstr "Ajouter un type d'expression" #: admin.php:79 msgid "Qualifiers" @@ -63,15 +63,15 @@ msgstr "Qualificateurs" #: admin.php:80 msgid "add new qualifier" -msgstr "Ajouter qualificateur" +msgstr "Ajouter un qualificateur" #: admin.php:93 msgid "Signature Types" -msgstr "Types de signatures" +msgstr "Types de signature" #: admin.php:94 msgid "add new signature type" -msgstr "Ajouter type de signature" +msgstr "Ajouter un type de signature" #: admin.php:108 msgid "License Statuses" @@ -79,11 +79,11 @@ msgstr "Statut des licences" #: admin.php:109 msgid "add new license status" -msgstr "Ajouter statut de licence" +msgstr "Ajouter un statut de licence" #: admin.php:129 ajax_forms.php:1033 msgid "Calendar Settings" -msgstr "Configuration du calendrier" +msgstr "Paramètres du calendrier" #: admin.php:149 msgid "Consortia" @@ -91,27 +91,27 @@ msgstr "Consortium" #: admin.php:150 msgid "add new consortium" -msgstr "Ajouter consortium" +msgstr "Ajouter un nouveau consortium" #: admin.php:163 msgid "Providers" -msgstr "Fournisseur" +msgstr "Fournisseurs" #: admin.php:164 msgid "add new provider" -msgstr "Ajouter fournisseur" +msgstr "Ajouter un nouveau fournisseur" #: admin.php:180 msgid "You don't have permission to access this page" -msgstr "Vous n'avez pas la permission d’accéder à cette page" +msgstr "Vous n'avez pas l'autorisation d’accéder à cette page" #: admin/classes/common/DBService.php:40 msgid "There was a problem with the database: " -msgstr "Il y a eu un problème avec la base de données: " +msgstr "Il y a eu un problème avec la base de données : " #: admin/classes/common/Object.php:72 msgid "Cannot get value for undefined key (" -msgstr "Ne peut pas récupérer une clé indéfinie (" +msgstr "Impossible de récupérer une valeur de clé indéfinie (" #: ajax_forms.php:47 ajax_htmldata.php:628 msgid "License" @@ -119,15 +119,15 @@ msgstr "Licence" #: ajax_forms.php:51 msgid "License Name:" -msgstr "Nom de la Licence:" +msgstr "Nom de la licence :" #: ajax_forms.php:56 msgid "Publisher / Provider:" -msgstr "Éditeur / Fournisseur:" +msgstr "Éditeur / fournisseur :" #: ajax_forms.php:66 msgid "Consortium:" -msgstr "Consortium:" +msgstr "Consortium :" #: ajax_forms.php:94 ajax_htmldata.php:494 index.php:92 msgid "" @@ -135,18 +135,18 @@ msgid "" "is set up for organizations correctly and the database and tables have been " "created." msgstr "" -"Il y a eu un problème avec la requête, s'il vous plaît vérifiez si la " -"configuration pour les organisations est correcte dans configuration.ini et " -"les tableaux de la base de données ont été créées." +"Il y a eu un problème lors du traitement de cette demande, merci de vérifier " +"les organisations sont configurées correctement dans le fichier " +"configuration.ini et que les tableaux et la base de données ont été créés." #: ajax_forms.php:106 msgid "add consortium" -msgstr "Ajouter consortium" +msgstr "Ajouter un consortium" #: ajax_forms.php:113 ajax_forms.php:271 ajax_forms.php:368 ajax_forms.php:638 #: ajax_forms.php:829 msgid "submit" -msgstr "Soumettre" +msgstr "Envoyer" #: ajax_forms.php:114 ajax_forms.php:271 ajax_forms.php:369 ajax_forms.php:639 #: ajax_forms.php:830 ajax_forms.php:963 ajax_forms.php:1009 @@ -160,35 +160,35 @@ msgstr "Télécharger un document" #: ajax_forms.php:167 msgid "Effective Date:" -msgstr "Date effective:" +msgstr "Date effective :" #: ajax_forms.php:174 msgid "Document Type:" -msgstr "Type de document:" +msgstr "Type de document :" #: ajax_forms.php:195 msgid "add document type" -msgstr "Ajouter type de document" +msgstr "Ajouter un type de document" #: ajax_forms.php:203 msgid "Parent:" -msgstr "Parent:" +msgstr "Type principal :" #: ajax_forms.php:235 msgid "Name:" -msgstr "Nom:" +msgstr "Nom :" #: ajax_forms.php:241 msgid "File:" -msgstr "Fichier:" +msgstr "Fichier :" #: ajax_forms.php:247 msgid "replace with new file" -msgstr "Remplacer avec un nouveau fichier" +msgstr "Remplacer par un nouveau fichier" #: ajax_forms.php:263 msgid "Archived:" -msgstr "Archivé:" +msgstr "Archivé :" #: ajax_forms.php:297 msgid "Archive Document Date" @@ -196,7 +196,7 @@ msgstr "Date de l'archivage du document" #: ajax_forms.php:302 msgid "Archive Date:" -msgstr "Date d'archivage:" +msgstr "Archivé le :" #: ajax_forms.php:305 ajax_processing.php:505 ajax_processing.php:517 #: ajax_processing.php:530 @@ -205,15 +205,15 @@ msgstr "Continuer" #: ajax_forms.php:335 msgid "Terms Tool Resource Link" -msgstr "Lien termes - Ressource" +msgstr "Lien vers l'Outil-resource des termes" #: ajax_forms.php:340 ajax_htmldata.php:1077 msgid "For Document:" -msgstr "Pour le document:" +msgstr "Pour le document :" #: ajax_forms.php:363 msgid "Terms Tool Resource:" -msgstr "Ressource de termes" +msgstr "Ressource de l'outil des termes :" #: ajax_forms.php:400 ajax_htmldata.php:771 ajax_htmldata.php:776 #: ajax_htmldata.php:901 ajax_htmldata.php:906 @@ -235,7 +235,7 @@ msgstr "Type" #: ajax_forms.php:443 ajax_forms.php:703 msgid "commit update" -msgstr "Soumettre modification" +msgstr "Valider la modification" #: ajax_forms.php:456 ajax_forms.php:725 ajax_htmldata.php:141 #: ajax_htmldata.php:234 ajax_htmldata.php:1148 ajax_htmldata.php:1227 @@ -248,7 +248,7 @@ msgstr "Modifier" #: ajax_htmldata.php:1228 ajax_htmldata.php:1285 ajax_htmldata.php:1333 #: ajax_htmldata.php:1450 js/forms/attachmentForm.js:84 msgid "remove" -msgstr "Enlever" +msgstr "Retirer" #: ajax_forms.php:479 ajax_forms.php:741 js/admin.js:327 #: js/forms/documentForm.js:188 js/forms/expressionForm.js:78 @@ -267,23 +267,23 @@ msgstr "Expressions" #: ajax_forms.php:550 msgid "Document:" -msgstr "Document:" +msgstr "Document :" #: ajax_forms.php:572 msgid "Expression Type:" -msgstr "Type d'expression:" +msgstr "Type d'expression :" #: ajax_forms.php:591 msgid "add expression" -msgstr "Ajouter expression" +msgstr "Ajouter une expression" #: ajax_forms.php:598 msgid "Qualifier:" -msgstr "Qualificateur:" +msgstr "Qualificateur :" #: ajax_forms.php:634 ajax_htmldata.php:541 msgid "Document Text:" -msgstr "Texte du document" +msgstr "Texte du document :" #: ajax_forms.php:672 ajax_forms.php:682 ajax_htmldata.php:629 msgid "Notes" @@ -291,7 +291,7 @@ msgstr "Notes" #: ajax_forms.php:673 msgid "For Document Text:" -msgstr "Pour le document texte:" +msgstr "Pour le texte du document :" #: ajax_forms.php:787 license.php:65 license.php:89 license.php:109 #: license.php:128 @@ -300,20 +300,19 @@ msgstr "Pièces jointes" #: ajax_forms.php:791 msgid "Date:" -msgstr "Date:" +msgstr "Date :" #: ajax_forms.php:798 msgid "Details:" -msgstr "Détails:" +msgstr "Détails :" #: ajax_forms.php:804 msgid "Attachments:" -msgstr "Pièces jointes:" +msgstr "Pièces jointes :" -#: ajax_forms.php:858 ajax_forms.php:899 ajax_forms.php:982 -#: ajax_forms.php:1133 +#: ajax_forms.php:858 ajax_forms.php:899 ajax_forms.php:982 ajax_forms.php:1133 msgid "Update" -msgstr "Mise à jour" +msgstr "Mettre à jour" #: ajax_forms.php:863 ajax_htmldata.php:1284 ajax_htmldata.php:1332 #: ajax_htmldata.php:1449 @@ -357,37 +356,38 @@ msgstr "" #: ajax_forms.php:917 ajax_forms.php:920 msgid "Admin users have access to the Admin page and the SFX tab." msgstr "" -"Les utilisateurs 'Admin' peuvent accéder à la page Admin et à l'onglet SFX" +"Les utilisateurs 'Admin' peuvent accéder à la page Admin et à l'onglet SFX." #: ajax_forms.php:917 ajax_forms.php:920 msgid "Restricted users do not have the ability to view documents" msgstr "" -"Les utilisateurs 'Restricted' n'ont pas la possibilité de regarder les " +"Les utilisateurs 'Restricted' n'ont pas la possibilité de consulter les " "documents" #: ajax_forms.php:917 ajax_forms.php:920 msgid "" "View only users can view all license information, including the license pdf" msgstr "" -"Les utilisateurs 'View only' peuvent regarder l'information des licences, y " -"compris le pdf de la licence" +"Les utilisateurs 'View only' peuvent consulter tous les détails de licences, " +"y compris le fichier PDF de la licence" #: ajax_forms.php:949 msgid "Terms Tool Email" -msgstr "Email termes" +msgstr "Envoyer un email Outil des termes" #: ajax_forms.php:952 msgid "" "Enter email address if you wish this user to receive email notifications " "when the terms tool box is checked on the Expressions tab." msgstr "" -"Tapez l'adresse email si vous souhaitez que cet utilisateur reçoive des " -"notifications par email lorsque la boîte de termes est activée dans l'onglet " -"Expressions." +"Entrez une adresse email si vous voulez que cet utilisateur reçoive des " +"notifications par email lorsque la boîte d'outils de termes est activée dans " +"l'onglet Expressions." #: ajax_forms.php:952 msgid "Leave this field blank if the user shouldn't receive emails." -msgstr "Laissez ce champ vide si l'utilisateur ne doit pas recevoir d'emails." +msgstr "" +"Laissez ce champ vide si l'utilisateur ne devrait pas recevoir d'emails." #: ajax_forms.php:993 ajax_forms.php:994 ajax_htmldata.php:1322 index.php:180 msgid "Expression Type" @@ -407,7 +407,7 @@ msgstr "Afficher" #: ajax_forms.php:1004 msgid "Note type of display allows for terms tool use" -msgstr "Type de note qui permet d'afficher l'utilisation des termes" +msgstr "L'affichage du type de note permet d'utiliser l'outil des termes" #: ajax_forms.php:1024 msgid "Edit" @@ -429,7 +429,7 @@ msgstr "Qualificateur" #: ajax_forms.php:1146 ajax_htmldata.php:1436 msgid "For Expression Type" -msgstr "Pour le type de l'expression" +msgstr "Pour le type d'expression" #: ajax_forms.php:1194 ajax_htmldata.php:1561 ajax_processing.php:1172 msgid "Action " @@ -437,15 +437,15 @@ msgstr "Action" #: ajax_forms.php:1194 ajax_htmldata.php:1561 ajax_processing.php:1172 msgid " not set up!" -msgstr "Non défini!" +msgstr " Non défini !" #: ajax_htmldata.php:50 msgid "edit license" -msgstr "Modifier licence" +msgstr "Modifier la licence" #: ajax_htmldata.php:50 msgid "remove license" -msgstr "Enlever licence" +msgstr "Retirer la licence" #: ajax_htmldata.php:61 msgid "edit organization" @@ -453,7 +453,7 @@ msgstr "Modifier l'organisation" #: ajax_htmldata.php:78 msgid "License Status:" -msgstr "Statut de la licence:" +msgstr "Statut de la licence :" #: ajax_htmldata.php:131 msgid "For Document" @@ -468,11 +468,11 @@ msgstr "Ressource" #: ajax_htmldata.php:1237 ajax_htmldata.php:1294 ajax_htmldata.php:1342 #: ajax_htmldata.php:1419 msgid "(none found)" -msgstr "(non trouvé)" +msgstr "(aucun trouvé)" #: ajax_htmldata.php:159 msgid "add new terms tool resource link" -msgstr "Ajouter lien ressources-termes" +msgstr "Ajouter un nouveau lien vers l'Outil-resource des termes" #: ajax_htmldata.php:183 msgid "Details" @@ -496,11 +496,11 @@ msgstr "Voir pièce jointe " #: ajax_htmldata.php:249 msgid "add new attachment" -msgstr "Ajouter pièce jointe" +msgstr "Ajouter une pièce jointe" #: ajax_htmldata.php:322 msgid "Sorry, no licenses fit your query" -msgstr "Désolé, il n'y a pas de licence correspondant à votre requête" +msgstr "Désolé, aucune licence ne correspond à votre demande" #: ajax_htmldata.php:329 msgid "Displaying " @@ -516,7 +516,7 @@ msgstr " de " #: ajax_htmldata.php:329 msgid " License Records" -msgstr " fiches Licences" +msgstr " fiches de Licences" #: ajax_htmldata.php:381 ajax_htmldata.php:461 ajax_htmldata.php:768 #: ajax_htmldata.php:773 ajax_htmldata.php:898 ajax_htmldata.php:903 @@ -525,7 +525,7 @@ msgstr "Nom" #: ajax_htmldata.php:382 ajax_htmldata.php:462 msgid "Publisher / Provider" -msgstr "Éditeur / Fournisseur" +msgstr "Éditeur / fournisseur" #: ajax_htmldata.php:383 ajax_htmldata.php:463 index.php:101 msgid "Consortium" @@ -537,15 +537,15 @@ msgstr "Statut" #: ajax_htmldata.php:430 msgid "records per page" -msgstr "resultats par page" +msgstr "résultats par page" #: ajax_htmldata.php:533 msgid "view / edit license" -msgstr "Voir / Modifier licence" +msgstr "Voir / modifier la licence" #: ajax_htmldata.php:533 msgid "view / edit " -msgstr "Voir / Modifier " +msgstr "Voir / modifier " #: ajax_htmldata.php:533 ajax_htmldata.php:1174 msgid " notes" @@ -558,16 +558,16 @@ msgstr "Voir document" #: ajax_htmldata.php:535 ajax_htmldata.php:637 msgid "view license" -msgstr "Voir licence" +msgstr "Voir la licence" #: ajax_htmldata.php:545 ajax_htmldata.php:650 ajax_htmldata.php:1153 #: ajax_htmldata.php:1155 msgid " Notes:" -msgstr " Notes:" +msgstr " Notes :" #: ajax_htmldata.php:571 msgid "Qualifiers:" -msgstr "Qualificateurs:" +msgstr "Qualificateurs :" #: ajax_htmldata.php:630 ajax_htmldata.php:1082 msgid "Document Text" @@ -575,7 +575,7 @@ msgstr "Texte du document" #: ajax_htmldata.php:642 msgid "(document text not entered)" -msgstr "(il n'y a pas texte dans le document)" +msgstr "(aucun texte dans le document)" #: ajax_htmldata.php:690 msgid "(none for " @@ -587,7 +587,7 @@ msgstr "Documents archivés" #: ajax_htmldata.php:740 msgid "hide archives" -msgstr "cacher archives" +msgstr "cacher les archives" #: ajax_htmldata.php:770 ajax_htmldata.php:775 ajax_htmldata.php:900 #: ajax_htmldata.php:905 @@ -596,11 +596,11 @@ msgstr "Date effective" #: ajax_htmldata.php:811 ajax_htmldata.php:931 msgid "archived on: " -msgstr "Archivé le: " +msgstr "Archivé le : " #: ajax_htmldata.php:834 ajax_htmldata.php:952 msgid "(no date)" -msgstr "(Pas de date établie)" +msgstr "(aucune date)" #: ajax_htmldata.php:845 ajax_htmldata.php:963 msgid "add/view details" @@ -608,15 +608,15 @@ msgstr "Ajouter/voir les détails" #: ajax_htmldata.php:852 ajax_htmldata.php:970 msgid "add signatures" -msgstr "Ajouter signatures" +msgstr "Ajouter des signatures" #: ajax_htmldata.php:868 ajax_htmldata.php:985 msgid "view expressions" -msgstr "Voir expressions" +msgstr "Voir les expressions" #: ajax_htmldata.php:874 ajax_htmldata.php:991 msgid "edit document" -msgstr "Modifier document" +msgstr "Modifier un document" #: ajax_htmldata.php:874 ajax_htmldata.php:991 msgid "remove document" @@ -624,29 +624,29 @@ msgstr "Supprimer le document" #: ajax_htmldata.php:884 ajax_htmldata.php:886 msgid "This document has " -msgstr "Ce document a été" +msgstr "Ce document a été " #: ajax_htmldata.php:884 ajax_htmldata.php:886 msgid " children document(s) not displayed." -msgstr " les documents enfants ne sont pas affichés." +msgstr " le(s) document(s) subsidiaire(s) ne sont pas affichés." #: ajax_htmldata.php:884 ajax_htmldata.php:886 msgid "show all documents for this parent" -msgstr "montrer tous les documents de ce parent" +msgstr "Afficher tous les documents de cet élément principal" #: ajax_htmldata.php:890 ajax_htmldata.php:892 ajax_htmldata.php:1000 #: ajax_htmldata.php:1002 msgid "The following " -msgstr "Le suivant" +msgstr "Le/les document(s) suivant(s)" #: ajax_htmldata.php:890 ajax_htmldata.php:892 ajax_htmldata.php:1000 #: ajax_htmldata.php:1002 msgid " document(s) belong to " -msgstr " document(s) appartient(nent) à " +msgstr "appartient(nent) à " #: ajax_htmldata.php:890 ajax_htmldata.php:892 msgid "hide children documents for this parent" -msgstr "cacher les documents des enfants de ce parent" +msgstr "cacher les documents subsidiaires de cet élément principal" #: ajax_htmldata.php:929 msgid "archive document" @@ -658,15 +658,15 @@ msgstr " archive(s) disponible(s)." #: ajax_htmldata.php:1029 msgid "show archives" -msgstr "montrer archives" +msgstr "Afficher les archives" #: ajax_htmldata.php:1035 msgid "upload new document" -msgstr "Télécharger document" +msgstr "Télécharger un nouveau document" #: ajax_htmldata.php:1123 msgid "used in terms tool" -msgstr "utilisé dans les termes" +msgstr "utilisé dans l'outil de termes" #: ajax_htmldata.php:1168 index.php:105 msgid "(none)" @@ -674,104 +674,104 @@ msgstr "(aucun)" #: ajax_htmldata.php:1174 msgid "add/view " -msgstr "Ajouter/Voir" +msgstr "Ajouter/voir" #: ajax_htmldata.php:1198 msgid "add new expression" -msgstr "Ajouter expression" +msgstr "Ajouter une nouvelle expression" #: ajax_htmldata.php:1265 msgid "Terms Tool Update Email" -msgstr "Modifier l'email du terme" +msgstr "Modifier l'adresse email de l'outil des termes" #: ajax_htmldata.php:1363 msgid "Setting" -msgstr "Configuration" +msgstr "Paramètre" #: ajax_htmldata.php:1486 msgid "Limit by Qualifier:" -msgstr "Limite par qualificateur:" +msgstr "Restreindre par qualificateur :" #: ajax_processing.php:96 msgid "License successfully deleted." -msgstr "La licence a été supprimée avec succès." +msgstr "Licence supprimée avec succès." #: ajax_processing.php:172 ajax_processing.php:957 msgid "success uploading!" -msgstr "Téléchargement correct!" +msgstr "Téléchargement réussi !" #: ajax_processing.php:175 ajax_processing.php:960 msgid "There was a problem saving your file to" -msgstr "Il y a eu un problème pour enregistrer votre fichier sur" +msgstr "Il y a eu un problème lors de l'enregistrement de votre fichier sur" #: ajax_processing.php:236 msgid "Document Saved Successfully." -msgstr "Document enregistré." +msgstr "Document enregistré avec succès." #: ajax_processing.php:250 msgid "Signature Deleted Successfully." -msgstr "Signature effacée." +msgstr "Signature effacée avec succès." #: ajax_processing.php:312 msgid "Expression Removed Successfully." -msgstr "Expression supprimée." +msgstr "Expression supprimée avec succès." #: ajax_processing.php:335 msgid "" "An expression in the licensing module has been approved for terms tool use." msgstr "" -"Une expression dans le module licence a été approuvée pour l'utilisation des " -"termes." +"Une expression du module Licences a été validée pour être utilisée dans " +"l'outil des termes." #: ajax_processing.php:336 msgid "License: " -msgstr "Licence: " +msgstr "Licence : " #: ajax_processing.php:337 msgid "View License Record: " -msgstr "Voir la fiche licence:" +msgstr "Consulter la fiche de la licence :" #: ajax_processing.php:341 msgid "Licensing - expression set to production use" -msgstr "Licence - expression réglée pour l'utilisation en production" +msgstr "Licence - expression définie pour l'utilisation de production" #: ajax_processing.php:346 msgid "Approved for terms tool display." -msgstr "Approuvé pour affichage dans les termes." +msgstr "Validé pour l'affichage dans l'outil des termes." #: ajax_processing.php:348 msgid "Removed from terms tool display." -msgstr "Enlevé de l'affichage dans les termes." +msgstr "Retiré de l'affichage de l'outil des termes." #: ajax_processing.php:375 msgid "Expression Note Updated Successfully." -msgstr "Note de l'expression modifiée." +msgstr "Note de l'expression modifiée avec succès." #: ajax_processing.php:391 msgid "Expression Note Added Successfully." -msgstr "Note de l'expression enregistrée." +msgstr "Note de l'expression enregistrée avec succès." #: ajax_processing.php:415 msgid "Note Removed Successfully." -msgstr "Note supprimée." +msgstr "Note supprimée avec succès." #: ajax_processing.php:452 msgid "Terms Tool Resource Link successfully deleted" -msgstr "Le lien de la ressource termes a été supprimé" +msgstr "Le lien de la ressource Outil des termes a été supprimé avec succès" #: ajax_processing.php:468 msgid "License Updated Successfully." -msgstr "La licence a été mis à jour." +msgstr "Licence mise à jour avec succès." #: ajax_processing.php:477 msgid "License Added Successfully." -msgstr "La licence a été enregistrée." +msgstr "Licence ajoutée avec succès." #: ajax_processing.php:477 msgid "Please continue to upload documents and add expressions or emails." msgstr "" -"Merci de continuer avec le téléchargement des documents et ajoutez " -"expressions ou emails." +"Merci de continuer à télécharger des documents et à ajouter des expressions " +"ou des emails." #: ajax_processing.php:514 ajax_processing.php:527 msgid "SQL Insert Failed." @@ -779,7 +779,7 @@ msgstr "L'insertion SQL a échoué." #: ajax_processing.php:514 ajax_processing.php:527 msgid "Please make sure everything is filled out correctly." -msgstr "Merci de vous assurer que tout est correctement rempli." +msgstr "Merci de vous assurer que tout est rempli correctement." #: ajax_processing.php:772 msgid "Unable to delete - this " @@ -789,28 +789,28 @@ msgstr "Impossible de supprimer - ceci " msgid "" " is in use. Please make sure no licenses are set up with this information." msgstr "" -" est utilisé. Merci de vous assurer qu'aucune licence n'est configurée avec " -"cette information." +" est en cours d'utilisation. Vérifiez qu'aucune licence n'est configurée " +"avec cette information." #: ajax_processing.php:778 msgid "" "Unable to delete. Please make sure no licenses are set up with this " "information." msgstr "" -"Impossible de supprimer. Merci de vous assurer qu'aucune licence n'est " -"configurée avec cette information." +"Impossible de supprimer. Vérifiez qu'aucune licence n'est configurée avec " +"cette information." #: ajax_processing.php:1027 msgid "Attachment successfully deleted" -msgstr "La pièce jointe a été supprimée avec succès." +msgstr "Pièce jointe supprimée avec succès." #: ajax_processing.php:1041 msgid "Attachment file successfully deleted" -msgstr "La pièce jointe a été supprimée avec succès." +msgstr "Fichier de la pièce jointe supprimé avec succès." #: ajax_processing.php:1062 msgid "Status has been updated" -msgstr "Le statut a été mis à jour" +msgstr "Statut mis à jour" #: calendar.php:26 in_progress.php:23 index.php:23 templates/header.php:120 #: templates/header.php:123 templates/header.php:126 @@ -828,11 +828,11 @@ msgstr "Impossible de se connecter à l'hôte." #: calendar.php:55 msgid "Could not find License database." -msgstr "Impossible de trouver la base de données Licence." +msgstr "Impossible de trouver la base de données des Licences." #: calendar.php:56 msgid "Could not find Resource database." -msgstr "Impossible de trouver la base de données Ressource." +msgstr "Impossible de trouver la base de données des Ressources." #: calendar.php:64 msgid "" @@ -844,23 +844,23 @@ msgstr "" #: calendar.php:95 msgid "There was an error with the CalendarSettings Configuration." -msgstr "Il y a eu un erreur dans la configuation de CalendarSettings." +msgstr "Il y a eu un erreur avec la configuation de la table CalendarSettings." #: calendar.php:122 calendar.php:162 msgid "Bad Query Failure" -msgstr "Erreur avec la requête" +msgstr "Echec de demande erronée" #: calendar.php:130 msgid "Upcoming License Renewals" -msgstr "Renouvellements de licence à venir" +msgstr "Prochains renouvellements de licence" #: calendar.php:222 msgid "No associated licenses available." -msgstr "Pas de licences associées disponibles." +msgstr "Aucune licence associée disponible." #: calendar.php:228 msgid "Expired " -msgstr "Expiré il y a " +msgstr "Expirée il y a " #: calendar.php:228 msgid " days ago" @@ -868,7 +868,7 @@ msgstr " jours" #: calendar.php:230 msgid "- Expires in " -msgstr "- Expirera en " +msgstr "- Expirera dans " #: calendar.php:233 msgid " days)" @@ -880,7 +880,7 @@ msgstr " jours " #: calendar.php:247 msgid "Participants: " -msgstr "Participants:" +msgstr "Participants :" #: compare.php:22 msgid "Expression Comparison" @@ -888,7 +888,7 @@ msgstr "Comparaison des expressions" #: compare.php:39 msgid "Limit by Expression Type:" -msgstr "Limite par le type d'expression:" +msgstr "Restreindre par type d'expression :" #: in_progress.php:33 msgid "Licenses In Progress" @@ -900,11 +900,11 @@ msgstr "Afficher tous" #: index.php:48 msgid "Search" -msgstr "Recherche" +msgstr "Rechercher" #: index.php:49 index.php:238 msgid "new search" -msgstr "Nouvelle" +msgstr "Nouvelle recherche" #: index.php:58 msgid "Name (contains)" @@ -912,11 +912,11 @@ msgstr "Nom (contient)" #: index.php:61 msgid "go!" -msgstr "Valider!" +msgstr "OK !" #: index.php:67 msgid "Publisher/Provider" -msgstr "Éditeur/Fournisseur" +msgstr "Éditeur/fournisseur" #: index.php:78 index.php:104 msgid "All" @@ -936,7 +936,7 @@ msgstr "Documents" #: license.php:64 license.php:88 license.php:108 license.php:127 msgid "Terms Tool" -msgstr "Termes" +msgstr "Outil des termes" #: not_available.php:21 msgid "Not Available" @@ -944,14 +944,14 @@ msgstr "Non disponible" #: not_available.php:66 msgid "You have not been set up to have access to the Licensing Module." -msgstr "Vous n'avez pas configuré l'accès au Module Licence." +msgstr "Vous n'avez pas configuré l'accès au Module de Licences." #: templates/header.php:35 msgid "" "Both license name and organization must be filled out. Please try again." msgstr "" -"Tant le nom de licence que l'organisation doivent être remplis. Merci de " -"ressayer." +"Le nom de la licence et de l'organisation doivent être renseignés. Réessayez " +"à nouveau." #: templates/header.php:83 msgid "" @@ -959,10 +959,10 @@ msgid "" "JavaScript is either disabled or not supported by your browser. To use " "CORAL, enable JavaScript by changing your browser options, then " msgstr "" -"JavaScript doit être activé pour utiliser CORAL. Il semble que JavaScript " -"est désactivé ou n'est pas supporté par votre navigateur. Pour utiliser " -"CORAL, activez JavaScript en modifiant la configuration de votre navigateur, " -"puis" +"JavaScript doit être activé pour utiliser CORAL. Cepandant, il semble que " +"JavaScript soit désactivé ou n'est pas supporté par votre navigateur web. " +"Pour utiliser CORAL, activez JavaScript en modifiant les options de votre " +"navigateur, puis " #: templates/header.php:83 msgid "try again" @@ -978,7 +978,7 @@ msgstr "Se déconnecter" #: templates/header.php:120 templates/header.php:123 msgid "New License" -msgstr "Ajouter licence" +msgstr "Ajouter une nouvelle licence" #: templates/header.php:120 templates/header.php:123 templates/header.php:126 msgid "Licenses in Progress" @@ -986,7 +986,7 @@ msgstr "Licences en cours" #: templates/header.php:120 templates/header.php:123 msgid "Expression Comparision" -msgstr "Comparaison d'expression" +msgstr "Comparaison d'expressions" #: templates/header.php:120 msgid "Admin" @@ -998,74 +998,74 @@ msgstr "Changer de module" #: templates/header.php:185 msgid "Invalid translation route!" -msgstr "Le chemin vers les traductions n'est pas valide!" +msgstr "Chemin vers les traductions invalide !" #: terms_report.php:22 msgid "Terms Report" -msgstr "Rapport termes" +msgstr "Rapport des termes" #: js/admin.js:122 js/admin.js:227 js/admin.js:252 js/admin.js:278 #: js/admin.js:305 js/index.js:43 msgid "Processing..." -msgstr "En traitement..." +msgstr "Traitement en cours..." #: js/admin.js:225 js/admin.js:303 msgid "Do you really want to delete this data?" -msgstr "Voulez-vous vraiment supprimer cette donnée?" +msgstr "Voulez-vous vraiment supprimer ces données ?" #: js/admin.js:250 msgid "Do you really want to delete this user?" -msgstr "Voulez-vous vraiment supprimer cet utilisateur?" +msgstr "Voulez-vous vraiment supprimer cet utilisateur ?" #: js/admin.js:276 msgid "" "Do you really want to delete this expression type? Any associated " "Qualifiers will be deleted as well." msgstr "" -"Voulez-vous vraiment supprimer ce type d'expression? Tous les qualificatifs " -"associés seront supprimés aussi." +"Voulez-vous vraiment supprimer ce type d'expression ? Tous les " +"qualificateurs associés seront également supprimés." #: js/forms/attachmentForm.js:41 js/forms/attachmentForm.js:54 #: js/forms/documentForm.js:102 msgid "File name is already being used..." -msgstr "Le nom du fichier est en cours d'utilisation..." +msgstr "Le nom du fichier est déjà utilisé..." #: js/forms/attachmentForm.js:46 msgid "The attachments directory is not writable." msgstr "Le dossier des pièces jointes n'a pas de droits d'écriture." -#: js/forms/attachmentForm.js:84 js/forms/documentForm.js:134 -#: js/license.js:440 +#: js/forms/attachmentForm.js:84 js/forms/documentForm.js:134 js/license.js:440 msgid " successfully uploaded." msgstr " téléchargé avec succès." #: js/forms/attachmentForm.js:101 js/forms/attachmentForm.js:109 msgid "Do you really want to delete this attachment?" -msgstr "Voulez-vous vraiment supprimer cette pièce jointe?" +msgstr "Voulez-vous vraiment supprimer cette pièce jointe ?" #: js/forms/documentForm.js:38 js/forms/licenseForm.js:34 msgid "This name is already being used!" -msgstr "Ce nom est déjà utilisé!" +msgstr "Ce nom est déjà utilisé !" #: js/forms/documentForm.js:106 msgid "" "File name may not contain special characters - ampersand, single quote, " "double quote or less than/greater than characters" msgstr "" -"Le nom du fichier ne peut pas contenir des caractères spéciaux - " -"esperluette, apostrophe, guillemet ou caractères de moins que / plus que." +"Le nom du fichier ne peut contenir de caractères spéciaux - de \"et\" " +"commercial, d'apostrophes, de guillemets ou de signes plus grand que/moins " +"que." #: js/forms/documentForm.js:110 msgid "The documents directory is not writable." -msgstr "Le dossier des documents n'a pas des droits d'écriture." +msgstr "Le dossier des documents n'a pas de droits d'écriture." #: js/forms/documentForm.js:176 msgid "Document Type is required." -msgstr "Type de document nécessaire" +msgstr "Le type de document est obligatoire." #: js/forms/documentForm.js:177 msgid "Short Name is required." -msgstr "Nom court nécessaire." +msgstr "Un nom court est obligatoire." #: js/forms/documentForm.js:207 msgid "DocumentType has been added" @@ -1073,11 +1073,11 @@ msgstr "Type de document ajouté" #: js/forms/expressionForm.js:89 msgid "ExpressionType has been added" -msgstr "Type d'Expression ajouté" +msgstr "Type d'expression ajouté" #: js/forms/licenseForm.js:57 js/forms/licenseForm.js:118 msgid "Warning! This organization will be added new." -msgstr "Attention! Cette organisation sera ajouté à nouveau." +msgstr "Attention ! Cette organisation sera ajoutée à nouveau." #: js/forms/licenseForm.js:191 msgid "Consortium has been added" @@ -1085,11 +1085,11 @@ msgstr "Consortium ajouté" #: js/forms/licenseForm.js:200 msgid "License Name is required." -msgstr "Nom de la licence nécessaire." +msgstr "Le nom de la licence est obligatoire." #: js/forms/licenseForm.js:201 msgid "Provider is required." -msgstr "Fournisseur nécessaire." +msgstr "Le fournisseur est obligatoire." #: js/forms/sfxForm.js:59 msgid "A document must be selected to continue." @@ -1097,15 +1097,15 @@ msgstr "Un document doit être sélectionné pour continuer." #: js/forms/sfxForm.js:60 msgid "Terms Tool Resource must be entered to continue." -msgstr " Termes Ressource doit être saisi pour continuer." +msgstr "La Ressource Outil des termes doit être entrée pour continuer." #: js/forms/signatureForm.js:41 msgid "No match!" -msgstr "Pas de concordance !" +msgstr "Aucun élément correspondant !" #: js/forms/signatureForm.js:41 msgid "Selected: " -msgstr "Sélectionné: " +msgstr "Sélectionné : " #: js/forms/signatureForm.js:84 msgid "Do you really want to delete this signature?" @@ -1141,9 +1141,9 @@ msgid "" "document if there are associated expressions. Remove all expressions and " "try again." msgstr "" -"Il y a eu un problème pour supprimer le document. Vous ne pouvez pas " -"supprimer un document s'il y a des expressions associées. Enlevez tous les " -"expressions et réessayez." +"Il y a eu un problème lors de la suppression du document. Vous ne pouvez pas " +"supprimer un document s'il contient des expressions associées. Retirez " +"toutes les expressions et essayez à nouveau." #: js/license.js:336 msgid "Do you really want to delete this expression?" @@ -1154,16 +1154,17 @@ msgid "" "Do you really want to delete this attachment? This will also delete all " "attached files." msgstr "" -"Voulez-vous vraiment supprimer cette pièce jointe? Cela effacera aussi tous " -"les fichiers enregistrés." +"Voulez-vous vraiment supprimer cette pièce jointe ? Cette opération " +"supprimera également tous les fichiers rattachés." #: js/license.js:368 msgid "Do you really want to delete this terms tool resource link?" -msgstr "Voulez-vous vraiment supprimer ce lien vers l'outil terms resource?" +msgstr "" +"Voulez-vous vraiment supprimer ce lien vers l'outil de ressource des termes ?" #: js/license.js:408 js/license.js:438 msgid "File name is already being used." -msgstr "Ce nom de fichier est utilisé" +msgstr "Ce nom de fichier est déjà utilisé." #: js/plugins/date.js:30 msgid "Sunday" @@ -1331,7 +1332,7 @@ msgstr "Mois suivant" #: js/plugins/jquery.datePicker.js:1134 msgid "Choose date" -msgstr "Choisir la date" +msgstr "Sélectionnez une date" #~ msgid "French, FR" #~ msgstr "Français, FR" From ac4b1d07f14c507297dc15e80e9d357ef1a1ba42 Mon Sep 17 00:00:00 2001 From: Bradley Droubay Date: Wed, 6 Apr 2016 09:59:33 -0600 Subject: [PATCH 20/55] Changes for additional languages --- LangCodes.php | 14 ++++++++++---- templates/header.php | 8 ++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/LangCodes.php b/LangCodes.php index c352973..ec02e56 100644 --- a/LangCodes.php +++ b/LangCodes.php @@ -7,15 +7,21 @@ class LangCodes{ public function getLanguage($code){ $all_lang=array( - 'fr'=>'fr_FR', - 'en'=>'en_US' + 'fr_FR'=>'fr_FR', + 'en_US'=>'en_US', + 'zh_CN'=>'zh_CN', + 'zh_TW'=>'zh_TW', + 'de_DE'=>'de_DE' ); return $all_lang[$code]; } public function getNameLang($code_lang){ $name_lang=array( - 'fr'=>'Français', - 'en'=>'English' + 'fr_FR'=>'Français', + 'en_US'=>'English', + 'zh_CN'=>'中文 (中国)', + 'zh_TW'=>'中文 (台灣)', + 'de_DE'=>'Deutsch' ); return $name_lang[$code_lang]; } diff --git a/templates/header.php b/templates/header.php index 4d15a37..ccbb158 100644 --- a/templates/header.php +++ b/templates/header.php @@ -204,15 +204,15 @@ for($i=0; $i".$lang_name->getNameLang(substr($lang[$i],0,2)).""; + echo ""; }else{ - echo ""; + echo ""; } }else{ if($defLang==substr($lang[$i],0,2)){ - echo ""; + echo ""; }else{ - echo ""; + echo ""; } } } From 93d2f8a1711a9857074934312e1e071ed4e7acc9 Mon Sep 17 00:00:00 2001 From: Bradley Droubay Date: Thu, 7 Apr 2016 14:16:04 -0600 Subject: [PATCH 21/55] Fixed bindtextdomain path --- directory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/directory.php b/directory.php index cb61a34..180bc98 100644 --- a/directory.php +++ b/directory.php @@ -88,6 +88,6 @@ function format_date($mysqlDate) { } putenv("LC_ALL=$http_lang"); setlocale(LC_ALL, $http_lang.".utf8"); -bindtextdomain("messages", "./locale"); +bindtextdomain("messages", dirname(__FILE__) . "/locale"); textdomain("messages"); ?> \ No newline at end of file From 91777e2b1065027be5620b7f2aebff7698910996 Mon Sep 17 00:00:00 2001 From: Bradley Droubay Date: Mon, 11 Apr 2016 12:55:41 -0600 Subject: [PATCH 22/55] fixed changed default locale to get 5 characters instead of 2 --- LangCodes.php | 16 ++++++++-------- directory.php | 4 +++- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/LangCodes.php b/LangCodes.php index ec02e56..b583e00 100644 --- a/LangCodes.php +++ b/LangCodes.php @@ -8,20 +8,20 @@ class LangCodes{ public function getLanguage($code){ $all_lang=array( 'fr_FR'=>'fr_FR', - 'en_US'=>'en_US', - 'zh_CN'=>'zh_CN', - 'zh_TW'=>'zh_TW', - 'de_DE'=>'de_DE' + 'en_US'=>'en_US'//, + //'zh_CN'=>'zh_CN', + //'zh_TW'=>'zh_TW', + //'de_DE'=>'de_DE' ); return $all_lang[$code]; } public function getNameLang($code_lang){ $name_lang=array( 'fr_FR'=>'Français', - 'en_US'=>'English', - 'zh_CN'=>'中文 (中国)', - 'zh_TW'=>'中文 (台灣)', - 'de_DE'=>'Deutsch' + 'en_US'=>'English'//, + //'zh_CN'=>'中文 (中国)', + //'zh_TW'=>'中文 (台灣)', + //'de_DE'=>'Deutsch' ); return $name_lang[$code_lang]; } diff --git a/directory.php b/directory.php index cb61a34..b048b1c 100644 --- a/directory.php +++ b/directory.php @@ -83,8 +83,10 @@ function format_date($mysqlDate) { if(isset($_COOKIE["lang"])){ $http_lang = $_COOKIE["lang"]; }else{ - $codeL = substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2); + $codeL = str_replace("-","_",substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,5)); $http_lang = $lang_name->getLanguage($codeL); + if($http_lang == "") + $http_lang = "en_US"; } putenv("LC_ALL=$http_lang"); setlocale(LC_ALL, $http_lang.".utf8"); From 1ff38adad370e1c86cb9c7841f391eb889b4dcf1 Mon Sep 17 00:00:00 2001 From: Bradley Droubay Date: Thu, 28 Apr 2016 09:12:55 -0600 Subject: [PATCH 23/55] Adding Onix-PL Import Functionality --- css/style.css | 21 +++++++ onix_import.php | 147 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 168 insertions(+) create mode 100644 onix_import.php diff --git a/css/style.css b/css/style.css index 1b1f4f8..5e3191b 100644 --- a/css/style.css +++ b/css/style.css @@ -1628,3 +1628,24 @@ a.save-button #setLanguage { vertical-align: middle; } + +#onixImportPage { + text-align: center; +} +#onixImportPage p { + margin-bottom: 15px; +} + +#onixImportPage legend { + margin-bottom: 10px; + font-weight: bold; + width: 100%; +} + +#onixImportPage fieldset { + margin-bottom: 20px; +} + +#importOptions { + text-align: left; +} \ No newline at end of file diff --git a/onix_import.php b/onix_import.php new file mode 100644 index 0000000..664827c --- /dev/null +++ b/onix_import.php @@ -0,0 +1,147 @@ + $val) + { + if(strtolower($val['shortName']) == strtolower($shortName)) { + return $key; + break; + } + } + return null; + } + session_start(); + include_once 'directory.php'; + $pageTitle=_('ONIX-PL Import'); + include 'templates/header.php'; +?> +

+'._("The file has been successfully uploaded.").'

'; + // Let's analyze this file + if(($xml = simplexml_load_file($uploadfile)) !== FALSE) + { + //get all expression types + $expressionTypeArray = array(); + $expressionTypeObj = new ExpressionType(); + $expressionTypeArray = $expressionTypeObj->allAsArray(); + + $licenseAgreement = ""; + foreach($xml->LicenseDocumentText->TextElement as $licensetext) + { + $licenseAgreement .= $licensetext->Text . "\n\n"; + } + + //Save License Agreement and get IDs + print $xml->LicenseDetail->Description; + $licenseFile = fopen("documents/" . trim($xml->LicenseDetail->Description) . ".txt", "wb") or die (_("Unable to create file for license.")); + fwrite($licenseFile, $licenseAgreement); + fclose($licenseFile); + + + if($_POST['usageTerms'] === "on") + { + foreach($xml->UsageTerms->Usage as $usage) + { + //get the expressionTypeID -- create expressionType if necessary + $expression = preg_replace('/^onixPL\:/s','',$usage->UsageType); + $index = searchForShortName($expression, $expressionTypeArray); + if($index !== null) + { + $expressionTypeID = $expressionTypeArray[$index]['expressionTypeID']; + $expressionTypeObj = new ExpressionType(new NamedArguments(array('primaryKey' => $expressionTypeID))); + } + else + { + $expressionTypeObj = new ExpressionType(); + $expressionTypeObj->shortName = $expression; + $expressionTypeObj->noteType = "Internal"; + $expressionTypeObj->save(); + $expressionTypeID = $expressionTypeObj->primaryKey; + $expressionTypeArray = $expressionTypeObj->allAsArray(); + $expressionTypeInserted++; + } + + //get the qualifierID -- create qualifier if necessary + //var_dump($expressionTypeObj); + $expressionQualifiers = $expressionTypeObj->getQualifiers(); + $qualifier = preg_replace('/^onixPL\:/s','',$usage->UsageStatus); + $qualifierID = -1; + foreach($expressionQualifiers as $expressionQualifier) + { + if(strtolower($expressionQualifier->shortName) == strtolower($qualifier)) + { + $qualifierID = $expressionQualifier->qualifierID; + break; + } + } + if($qualifierID === -1) + { + $qualifierObj = new Qualifier(); + $qualifierObj->expressionTypeID = $expressionTypeID; + $qualifierObj->shortName = $qualifier; + $qualifierObj->save(); + $qualifierID = $qualifierObj->primaryKey; + $qualifierInserted++; + } + } + + } + echo "

" . $expressionTypeInserted . _(" Expression Type(s) Created") . "

"; + echo "

" . $qualifierInserted . _(" Qualifiers Created") . "

"; + } + else + { + $error = _("Cannot create XML object"); + } + } + else + { + $error = _("Unable to upload the file"); + } + if ($error) + { + print "

"._("Error: ").$error.".

"; + } + else + { + } + } + elseif ($_POST['matchsubmit']) + { + } + else + { +?> + +
+ + + +
+
+ +
+
+
+
+
+
+
+
+ " class="submit-button" /> + + + From 6f8b2bb0eaca1853a170ee852f428a5e6b224825 Mon Sep 17 00:00:00 2001 From: Bradley Droubay Date: Thu, 28 Apr 2016 14:32:07 -0600 Subject: [PATCH 24/55] Onix-PL Import Functionality --- onix_import.php | 45 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 8 deletions(-) diff --git a/onix_import.php b/onix_import.php index 664827c..2e68800 100644 --- a/onix_import.php +++ b/onix_import.php @@ -10,7 +10,15 @@ function searchForShortName($shortName, $array) } return null; } - session_start(); + function simplexml_xpath_ns($element, $xpath, $xmlns) + { + foreach ($xmlns as $prefix_uri) + { + list($prefix, $uri) = explode("=", $prefix_uri, 2); + $element->registerXPathNamespace($prefix, $uri); + } + return $element->xpath($xpath); + } session_start(); include_once 'directory.php'; $pageTitle=_('ONIX-PL Import'); include 'templates/header.php'; @@ -39,15 +47,26 @@ function searchForShortName($shortName, $array) $licenseAgreement = ""; foreach($xml->LicenseDocumentText->TextElement as $licensetext) { - $licenseAgreement .= $licensetext->Text . "\n\n"; + $licenseAgreement .= html_entity_decode($licensetext->Text, ENT_QUOTES, "utf-8") . "\n\n"; } - //Save License Agreement and get IDs - print $xml->LicenseDetail->Description; - $licenseFile = fopen("documents/" . trim($xml->LicenseDetail->Description) . ".txt", "wb") or die (_("Unable to create file for license.")); - fwrite($licenseFile, $licenseAgreement); - fclose($licenseFile); - + //Save License Agreement to documents directory, create license, attachment, and attachmentFile records and get IDs + // $filename = trim($xml->LicenseDetail->Description); + // print $xml->LicenseDetail->Description; + // $licenseFile = fopen("documents/" . $filename . ".txt", "wb") or die (_("Unable to create file for license.")); + // fwrite($licenseFile, $licenseAgreement); + // fclose($licenseFile); + // $licenseObj = new License(); + // $licenseObj->shortName = $filename; + // $licenseObj->save(); + // $licenseID = $licenseObj->primaryKey; + // $documentObj = new Document(); + // $documentObj->shortName = $filename; + // $documentObj->documentTypeID = 3; + // $documentObj->licenseID = $licenseID; + // $documentObj->documentURL = $filename . ".txt"; + // $documentObj->save(); + // $documentID = $documentObj->primaryKey; if($_POST['usageTerms'] === "on") { @@ -94,6 +113,16 @@ function searchForShortName($shortName, $array) $qualifierID = $qualifierObj->primaryKey; $qualifierInserted++; } + foreach($usage->LicenseTextLink as $licenseTextLink) + { + $path = '//TextElement[@id="' . $licenseTextLink["href"] . '"]'; + $xmlns = ["n=http://www.editeur.org/onix-pl"]; + $result = simplexml_xpath_ns($xml, '/n:PublicationsLicenseExpression', $xmlns); + //var_dump($result); + print $path . "
"; + echo $result[0]->Text->__toString(); + print "
"; + } } } From 689a22f161bb5ff83637d5867a60823cfea4a266 Mon Sep 17 00:00:00 2001 From: Bradley Droubay Date: Fri, 29 Apr 2016 12:21:27 -0600 Subject: [PATCH 25/55] ONIX-PL Import Functionality --- images/menu/en_US/menu-onix-on.gif | Bin 0 -> 1117 bytes images/menu/en_US/menu-onix-over.gif | Bin 0 -> 1110 bytes images/menu/en_US/menu-onix.gif | Bin 0 -> 1117 bytes images/menu/fr_FR/menu-onix-on.gif | Bin 0 -> 1087 bytes images/menu/fr_FR/menu-onix-over.gif | Bin 0 -> 1082 bytes images/menu/fr_FR/menu-onix.gif | Bin 0 -> 1087 bytes onix_import.php | 325 ++++++++++++++++++++++++--- templates/header.php | 101 ++++++++- 8 files changed, 381 insertions(+), 45 deletions(-) create mode 100644 images/menu/en_US/menu-onix-on.gif create mode 100644 images/menu/en_US/menu-onix-over.gif create mode 100644 images/menu/en_US/menu-onix.gif create mode 100644 images/menu/fr_FR/menu-onix-on.gif create mode 100644 images/menu/fr_FR/menu-onix-over.gif create mode 100644 images/menu/fr_FR/menu-onix.gif diff --git a/images/menu/en_US/menu-onix-on.gif b/images/menu/en_US/menu-onix-on.gif new file mode 100644 index 0000000000000000000000000000000000000000..10ca381a5e01d779d1be8000d23acd720b449d10 GIT binary patch literal 1117 zcmd6k`%}^f0KmWUW_pG>U)4-ksau=p&PTe;kuY5glunOjbYizhz>V0 zA7H)(-{w-JbZVtvk(i!YD4Z}K_yE)5i;oZ$N!i+8vCj{mpFek>@N;2-L2-P*3wQ+p z;M9uFuw5mcp|y@OdgLu*^OMW#Mw5AT9*Pi17xbH{!k1lgZNY$Y-(q=dGM}yxLq^ly zz9qEg+1mE5d}U+Bu(N4;#}-eK>WA;km$uCBKsD4fuK8_xATgDu*bIBV$YJjpG`X&XCrl$a% zrT5CpD=Mq1Yijv|y84F3rskH``)z+bXzvhqiXJ}d>i)B*x9{Q4N1wwSYcUzD-@_V0E#`US0Ip!D1fuTpX0lf z`n<-$>~i3+7rc~WJqVng?Khss;j{TLYvmW2ssubEYvUE2*l@QtFmfjp=`JS13kh~u z!PQ|c0As7c>g#+um`%?Wr5?!us)Eao9pGJ2yo{1ZcqUy`fh;lmaGrCOmg;@E8%2%} zK~l!*+yyzdha7@7GjOt15B_V{N zMjdr=i}@-uMukN?QVJ#LPaqrtVaLXQbBfmKq>f`Ee8}0%BYt=onv+Mq)@~YhNWVdM z(ztir;R^aPSNsKPs@{ll{-s}`8mW{`2no)&y=`)cf@OI;l6 zMyw-9SZ>u!ahyL*QqvNa0xkwjv%F{}mE3typiuGQwys`rn2?)$z8-(}eouW#D4DJ(4P!-o%{p`pi*AHQ?w&g<8& zj~qGj@ZrO?Yu9#kbj+VWf6}B$XV0EJapJ_2Cr<(b0_M$|_x=0#b?er>eEIU;y?epI z!CSU$dG+d5L_|bjVBn`upUTS0PM<#g_wU~+Q>N_LvE%dS&q+y1rKP2pE?xTg@#Bmc zGj89$otT(dQBl#{+`MMZn*aa*`}+Da3|XM~lLhQ{9S{kM69)GG4USFCEv;?s9i3g> zJ-vPX6DCfYJZ0*%=`&`|nmuRky!i_jE?T@~>9XZ3R<2sTX6?H58#Zp*yk+aQ?K^hv z+P!D*zWoOd9$GJIFU)-SZOcT5evs z!uFDZt>f;SE6l79*%*2rEI6@%!+MLO^^pe+48>2HQmh>u0=DNr6krKZSmEGQ>LA6Y zDBvJ(Qzr+oS zD~msTvt>#!x0H?#!%0J?7DYDIofA(_Tk9w=-J3CFaR$eW1x+rFY->CG<(ZhT{1;iX zS5i+pMuF*CF7tASXO69xw{Wg<<3F*SpRYm1t?+O_)1qdM2WQ2OFj#GfRF(T%S#prE ze**W}toG9kyogjNefA+qn^^FPwtIsPn=H1@Gwo+|H=5oF(SwAek?3nOmPn)Xv z0hS(nMc!NOh`x32td%guGA$_xoB7R-xaS6#5;Zn>I}xKhXsg=9AY z(T|*l5xO1LPZh*cnI|d;NltL^SS*?lrYIj8exh`e=(GNEL(`ON72c&O3@LvexF)Jg zWF$0l*dBPm$S&ZpfLZZw#nOA_%`66I8=M3i4lpiE+$@=GnUxwFeRF4pN48?@jKIp~ z1=Fu?uG;A%&j6{t~Z|e^F7qIo` zZGG*}Fsn+-?Avfpexp|<+XrZZ-*-)z3%ru}xym9Xr$ThFsGF<1itS^K~^ literal 0 HcmV?d00001 diff --git a/images/menu/en_US/menu-onix.gif b/images/menu/en_US/menu-onix.gif new file mode 100644 index 0000000000000000000000000000000000000000..50614043776a46ee3d9e8780d7fdd71fc0923efe GIT binary patch literal 1117 zcmd6k`8V4K0KmVIyR|HsYgK}ctnEB|HDoo@Cac;cvgyml*bB9lwc597V_C~0hq8qh ziTg+_D5A>~(*|K0kbZ{=E0`4>;?Mix2=*^csOB-xNRubUa_WD!iw6pQa-HAihpCdZ1 zeb)#hMfyU?{iTjV7V2F~+-9UK;gHdk{H228N^B-VYR9eIPWQ7-D`G6pSAU-sgu!~y z6;Y{3JR%+CbjPc}0=(39r7YJYdJqct`@)S-Gug;{U-_vAl}2v6{0h~5rIexbTF*Jwr169;^hKO-ilR5bY;NYgr%X5V3RJKokH7N^nu<)cpwe-MP7A6}!1jgk z=eDI0?5p8ca{PGxy+dt{z{lh>^ zRv;>-%O%7BQ0y~u+Bx36lag?@2e=6^iuVYVtwNT?NTfTIQ1{N4Dk8@ literal 0 HcmV?d00001 diff --git a/images/menu/fr_FR/menu-onix-on.gif b/images/menu/fr_FR/menu-onix-on.gif new file mode 100644 index 0000000000000000000000000000000000000000..b9f1cece4efb557ae6cb87a764174a687a1fedf9 GIT binary patch literal 1087 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 LA^SJsZb0zA5YgLL literal 0 HcmV?d00001 diff --git a/onix_import.php b/onix_import.php index 2e68800..843f33e 100644 --- a/onix_import.php +++ b/onix_import.php @@ -10,15 +10,6 @@ function searchForShortName($shortName, $array) } return null; } - function simplexml_xpath_ns($element, $xpath, $xmlns) - { - foreach ($xmlns as $prefix_uri) - { - list($prefix, $uri) = explode("=", $prefix_uri, 2); - $element->registerXPathNamespace($prefix, $uri); - } - return $element->xpath($xpath); - } session_start(); include_once 'directory.php'; $pageTitle=_('ONIX-PL Import'); include 'templates/header.php'; @@ -44,29 +35,35 @@ function simplexml_xpath_ns($element, $xpath, $xmlns) $expressionTypeObj = new ExpressionType(); $expressionTypeArray = $expressionTypeObj->allAsArray(); + $textArray = array(); $licenseAgreement = ""; - foreach($xml->LicenseDocumentText->TextElement as $licensetext) + foreach($xml->LicenseDocumentText->TextElement as $licenseText) { - $licenseAgreement .= html_entity_decode($licensetext->Text, ENT_QUOTES, "utf-8") . "\n\n"; + $licenseAgreement .= (string)$licenseText->Text . "\n\n"; + if((string)$licenseText['id'] !== "") + { + $textArray[(string)$licenseText['id']]=(string)$licenseText->Text; + } } //Save License Agreement to documents directory, create license, attachment, and attachmentFile records and get IDs - // $filename = trim($xml->LicenseDetail->Description); - // print $xml->LicenseDetail->Description; - // $licenseFile = fopen("documents/" . $filename . ".txt", "wb") or die (_("Unable to create file for license.")); - // fwrite($licenseFile, $licenseAgreement); - // fclose($licenseFile); - // $licenseObj = new License(); - // $licenseObj->shortName = $filename; - // $licenseObj->save(); - // $licenseID = $licenseObj->primaryKey; - // $documentObj = new Document(); - // $documentObj->shortName = $filename; - // $documentObj->documentTypeID = 3; - // $documentObj->licenseID = $licenseID; - // $documentObj->documentURL = $filename . ".txt"; - // $documentObj->save(); - // $documentID = $documentObj->primaryKey; + $filename = trim($xml->LicenseDetail->Description); + print $xml->LicenseDetail->Description; + $licenseFile = fopen("documents/" . $filename . ".txt", "wb") or die (_("Unable to create file for license.")); + fwrite($licenseFile, $licenseAgreement); + fclose($licenseFile); + $licenseObj = new License(); + $licenseObj->shortName = $filename; + $licenseObj->organizationID = $_POST['licenseOrganizationID']; + $licenseObj->save(); + $licenseID = $licenseObj->primaryKey; + $documentObj = new Document(); + $documentObj->shortName = $filename; + $documentObj->documentTypeID = 3; + $documentObj->licenseID = $licenseID; + $documentObj->documentURL = $filename . ".txt"; + $documentObj->save(); + $documentID = $documentObj->primaryKey; if($_POST['usageTerms'] === "on") { @@ -92,7 +89,6 @@ function simplexml_xpath_ns($element, $xpath, $xmlns) } //get the qualifierID -- create qualifier if necessary - //var_dump($expressionTypeObj); $expressionQualifiers = $expressionTypeObj->getQualifiers(); $qualifier = preg_replace('/^onixPL\:/s','',$usage->UsageStatus); $qualifierID = -1; @@ -113,18 +109,176 @@ function simplexml_xpath_ns($element, $xpath, $xmlns) $qualifierID = $qualifierObj->primaryKey; $qualifierInserted++; } + $expressionObj = new Expression(); + $expressionObj->documentID = $documentID; + $expressionObj->expressionTypeID = $expressionTypeID; + $expressionText = ""; foreach($usage->LicenseTextLink as $licenseTextLink) { - $path = '//TextElement[@id="' . $licenseTextLink["href"] . '"]'; - $xmlns = ["n=http://www.editeur.org/onix-pl"]; - $result = simplexml_xpath_ns($xml, '/n:PublicationsLicenseExpression', $xmlns); - //var_dump($result); - print $path . "
"; - echo $result[0]->Text->__toString(); - print "
"; + $expressionText .= $textArray[(string)$licenseTextLink["href"]] . "\n\n"; } + $expressionObj->documentText = $expressionText; + $expressionObj->lastUpdateDate = "0000-00-00 00:00:00"; + $expressionObj->productionUseInd = "0"; + $expressionObj->save(); + $expressionID = $expressionObj->primaryKey; + $expressionQualifierProfileObj = new ExpressionQualifierProfile(); + $expressionQualifierProfileObj->expressionID = $expressionID; + $expressionQualifierProfileObj->qualifierID = $qualifierID; + $expressionQualifierProfileObj->save(); } + } + if($_POST['supplyTerms'] === "on") + { + foreach($xml->SupplyTerms->SupplyTerm as $supplyTerm) + { + //get the expressionTypeID -- create expressionType if necessary + $expression = preg_replace('/^onixPL\:/s','',$supplyTerm->SupplyTermType); + $index = searchForShortName($expression, $expressionTypeArray); + if($index !== null) + { + $expressionTypeID = $expressionTypeArray[$index]['expressionTypeID']; + $expressionTypeObj = new ExpressionType(new NamedArguments(array('primaryKey' => $expressionTypeID))); + } + else + { + $expressionTypeObj = new ExpressionType(); + $expressionTypeObj->shortName = $expression; + $expressionTypeObj->noteType = "Internal"; + $expressionTypeObj->save(); + $expressionTypeID = $expressionTypeObj->primaryKey; + $expressionTypeArray = $expressionTypeObj->allAsArray(); + $expressionTypeInserted++; + } + $expressionObj = new Expression(); + $expressionObj->documentID = $documentID; + $expressionObj->expressionTypeID = $expressionTypeID; + $expressionText = ""; + foreach($supplyTerm->LicenseTextLink as $licenseTextLink) + { + $expressionText .= $textArray[(string)$licenseTextLink["href"]] . "\n\n"; + } + $expressionObj->documentText = $expressionText; + $expressionObj->lastUpdateDate = "0000-00-00 00:00:00"; + $expressionObj->productionUseInd = "0"; + $expressionObj->save(); + $expressionID = $expressionObj->primaryKey; + } + } + if($_POST['continuingAccessTerms'] === "on") + { + foreach($xml->ContinuingAccessTerms->ContinuingAccessTerm as $continuingAccessTerm) + { + //get the expressionTypeID -- create expressionType if necessary + $expression = preg_replace('/^onixPL\:/s','',$continuingAccessTerm->ContinuingAccessTermType); + $index = searchForShortName($expression, $expressionTypeArray); + if($index !== null) + { + $expressionTypeID = $expressionTypeArray[$index]['expressionTypeID']; + $expressionTypeObj = new ExpressionType(new NamedArguments(array('primaryKey' => $expressionTypeID))); + } + else + { + $expressionTypeObj = new ExpressionType(); + $expressionTypeObj->shortName = $expression; + $expressionTypeObj->noteType = "Internal"; + $expressionTypeObj->save(); + $expressionTypeID = $expressionTypeObj->primaryKey; + $expressionTypeArray = $expressionTypeObj->allAsArray(); + $expressionTypeInserted++; + } + + $expressionObj = new Expression(); + $expressionObj->documentID = $documentID; + $expressionObj->expressionTypeID = $expressionTypeID; + $expressionText = ""; + foreach($continuingAccessTerm->LicenseTextLink as $licenseTextLink) + { + $expressionText .= $textArray[(string)$licenseTextLink["href"]] . "\n\n"; + } + $expressionObj->documentText = $expressionText; + $expressionObj->lastUpdateDate = "0000-00-00 00:00:00"; + $expressionObj->productionUseInd = "0"; + $expressionObj->save(); + $expressionID = $expressionObj->primaryKey; + } + } + if($_POST['paymentTerms'] === "on") + { + foreach($xml->PaymentTerms->PaymentTerm as $paymentTerm) + { + //get the expressionTypeID -- create expressionType if necessary + $expression = preg_replace('/^onixPL\:/s','',$paymentTerm->PaymentTermType); + $index = searchForShortName($expression, $expressionTypeArray); + if($index !== null) + { + $expressionTypeID = $expressionTypeArray[$index]['expressionTypeID']; + $expressionTypeObj = new ExpressionType(new NamedArguments(array('primaryKey' => $expressionTypeID))); + } + else + { + $expressionTypeObj = new ExpressionType(); + $expressionTypeObj->shortName = $expression; + $expressionTypeObj->noteType = "Internal"; + $expressionTypeObj->save(); + $expressionTypeID = $expressionTypeObj->primaryKey; + $expressionTypeArray = $expressionTypeObj->allAsArray(); + $expressionTypeInserted++; + } + + $expressionObj = new Expression(); + $expressionObj->documentID = $documentID; + $expressionObj->expressionTypeID = $expressionTypeID; + $expressionText = ""; + foreach($paymentTerm->LicenseTextLink as $licenseTextLink) + { + $expressionText .= $textArray[(string)$licenseTextLink["href"]] . "\n\n"; + } + $expressionObj->documentText = $expressionText; + $expressionObj->lastUpdateDate = "0000-00-00 00:00:00"; + $expressionObj->productionUseInd = "0"; + $expressionObj->save(); + $expressionID = $expressionObj->primaryKey; + } + } + if($_POST['generalTerms'] === "on") + { + foreach($xml->GeneralTerms->GeneralTerm as $generalTerm) + { + //get the expressionTypeID -- create expressionType if necessary + $expression = preg_replace('/^onixPL\:/s','',$generalTerm->GeneralTermType); + $index = searchForShortName($expression, $expressionTypeArray); + if($index !== null) + { + $expressionTypeID = $expressionTypeArray[$index]['expressionTypeID']; + $expressionTypeObj = new ExpressionType(new NamedArguments(array('primaryKey' => $expressionTypeID))); + } + else + { + $expressionTypeObj = new ExpressionType(); + $expressionTypeObj->shortName = $expression; + $expressionTypeObj->noteType = "Internal"; + $expressionTypeObj->save(); + $expressionTypeID = $expressionTypeObj->primaryKey; + $expressionTypeArray = $expressionTypeObj->allAsArray(); + $expressionTypeInserted++; + } + + $expressionObj = new Expression(); + $expressionObj->documentID = $documentID; + $expressionObj->expressionTypeID = $expressionTypeID; + $expressionText = ""; + foreach($generalTerm->LicenseTextLink as $licenseTextLink) + { + $expressionText .= $textArray[(string)$licenseTextLink["href"]] . "\n\n"; + } + $expressionObj->documentText = $expressionText; + $expressionObj->lastUpdateDate = "0000-00-00 00:00:00"; + $expressionObj->productionUseInd = "0"; + $expressionObj->save(); + $expressionID = $expressionObj->primaryKey; + } } echo "

" . $expressionTypeInserted . _(" Expression Type(s) Created") . "

"; echo "

" . $qualifierInserted . _(" Qualifiers Created") . "

"; @@ -165,11 +319,110 @@ function simplexml_xpath_ns($element, $xpath, $xmlns)


-
+

+ +
+ + + +
" class="submit-button" /> + diff --git a/templates/header.php b/templates/header.php index ccbb158..6ca81c1 100644 --- a/templates/header.php +++ b/templates/header.php @@ -117,15 +117,98 @@ isAdmin()){ ?> - .gif" hover="images/menu//menu-home-over.gif" class="rollover" />.gif" hover="images/menu//menu-licensesinprogress-over.gif" class="rollover" />.gif" hover="images/menu//menu-expressioncomparison-over.gif" class="rollover" />settings->resourcesModule == 'Y') && (strlen($config->settings->resourcesDatabaseName) > 0)) { ?>.gif" hover="images/menu//menu-calendar-over.gif" class="rollover" />.gif' hover="images/menu//menu-admin-over.gif" id="menu-last" class="rollover" />.gif' hover="images/menu/menu-end-over.gif" id="menu-end" /> -canEdit()){ ?> - .gif" hover="images/menu//menu-home-over.gif" class="rollover" />.gif" hover="images/menu//menu-licensesinprogress-over.gif" class="rollover" />.gif" hover="images/menu//menu-expressioncomparison-over.gif" id="menu-last" class="rollover" />settings->resourcesModule == 'Y') && (strlen($config->settings->resourcesDatabaseName) > 0)) { ?>.gif" hover="images/menu//menu-calendar-over.gif" class="rollover" /> - - .gif' hover="images/menu/menu-end-over.gif" id="menu-end" /> - - .gif" hover="images/menu//menu-home-over.gif" class="rollover" />.gif" hover="images/menu//menu-licensesinprogress-over.gif" class="rollover" />.gif" hover="images/menu//menu-expressioncomparison-over.gif" class="rollover" />settings->resourcesModule == 'Y') && (strlen($config->settings->resourcesDatabaseName) > 0)) { ?>.gif" hover="images/menu//menu-calendar-over.gif" class="rollover" />.gif' hover="images/menu//menu-admin-over.gif" id="menu-last" class="rollover" />.gif' hover="images/menu/menu-end-over.gif" id="menu-end" /> - +if ($user->isAdmin()) { ?> + + .gif" hover="images/menu//menu-home-over.gif" class="rollover" /> + + + + + + + + .gif" hover="images/menu//menu-licensesinprogress-over.gif" class="rollover" /> + + + + .gif" hover="images/menu//menu-expressioncomparison-over.gif" class="rollover" /> + + settings->resourcesModule == 'Y') && (strlen($config->settings->resourcesDatabaseName) > 0)) { ?> + + + .gif" hover="images/menu//menu-calendar-over.gif" class="rollover" /> + + + + + .gif" hover="images/menu//menu-onix-over.gif" class="rollover" /> + + + + .gif' hover="images/menu//menu-admin-over.gif" id="menu-last" class="rollover" /> + +canEdit()) { ?> + + .gif" hover="images/menu//menu-home-over.gif" class="rollover" /> + + + + + + + + .gif" hover="images/menu//menu-licensesinprogress-over.gif" class="rollover" /> + + + + .gif" hover="images/menu//menu-expressioncomparison-over.gif" id="menu-last" class="rollover" /> + + settings->resourcesModule == 'Y') && (strlen($config->settings->resourcesDatabaseName) > 0)) { ?> + + + .gif" hover="images/menu//menu-calendar-over.gif" class="rollover" /> + + + + + .gif" hover="images/menu//menu-onix-over.gif" class="rollover" /> + + + + .gif" hover="images/menu//menu-home-over.gif" class="rollover" /> + + + + + + + + .gif" hover="images/menu//menu-licensesinprogress-over.gif" class="rollover" /> + + + + .gif" hover="images/menu//menu-expressioncomparison-over.gif" class="rollover" /> + + settings->resourcesModule == 'Y') && (strlen($config->settings->resourcesDatabaseName) > 0)) { ?> + + + .gif" hover="images/menu//menu-calendar-over.gif" class="rollover" /> + + + + + .gif" hover="images/menu//menu-onix-over.gif" class="rollover" /> + + + + .gif' hover="images/menu//menu-admin-over.gif" id="menu-last" class="rollover" /> + + From 7c39e3d3332b95d1ec4afbf304e29ccea3da15d3 Mon Sep 17 00:00:00 2001 From: Bradley Droubay Date: Mon, 2 May 2016 08:42:52 -0600 Subject: [PATCH 26/55] ONIX-PL Functionality Complete --- js/onix_import.js | 117 ++++++++++++++++++++++++++++++++++++++++++++++ onix_import.php | 104 ++++------------------------------------- 2 files changed, 125 insertions(+), 96 deletions(-) create mode 100644 js/onix_import.js diff --git a/js/onix_import.js b/js/onix_import.js new file mode 100644 index 0000000..642bdff --- /dev/null +++ b/js/onix_import.js @@ -0,0 +1,117 @@ +$("#organizationName").keyup(function() { + $.ajax({ + type: "GET", + url: "ajax_processing.php", + cache: false, + async: true, + data: "action=getExistingOrganizationName&shortName=" + $("#organizationName").val(), + success: function(exists) { + if (exists == "0"){ + $("#licenseOrganizationID").val(""); + $("#span_error_organizationNameResult").html("
"+_("Warning! This organization will be added new.")); + + }else{ + $("#licenseOrganizationID").val(exists); + $("#span_error_organizationNameResult").html(""); + + } + } + }); +}); + +//used for autocomplete formatting +formatItem = function (row){ + return "" + row[1] + ""; +} + +formatResult = function (row){ + return row[1].replace(/(<.+?>)/gi, ''); +} + +$("#organizationName").autocomplete('ajax_processing.php?action=getOrganizations', { + minChars: 2, + max: 50, + mustMatch: false, + width: 233, + delay: 20, + cacheLength: 10, + matchSubset: true, + matchContains: true, + formatItem: formatItem, + formatResult: formatResult, + parse: function(data){ + var parsed = []; + var rows = data.split("\n"); + for (var i=0; i < rows.length; i++) { + var row = $.trim(rows[i]); + if (row) { + row = row.split("|"); + parsed[parsed.length] = { + data: row, + value: row[0], + result: formatResult(row, row[0]) || row[0] + }; + } + } + + if (parsed.length == 0) { + + $.ajax({ + type: "GET", + url: "ajax_processing.php", + cache: false, + async: true, + data: "action=getExistingOrganizationName&shortName=" + $("#organizationName").val(), + success: function(exists) { + if (exists == "0"){ + $("#licenseOrganizationID").val(""); + $("#span_error_organizationNameResult").html("
"+_("Warning! This organization will be added new.")); + + }else{ + $("#licenseOrganizationID").val(exists); + $("#span_error_organizationNameResult").html(""); + + } + } + }); + + } + } + }); + + +//once something has been selected, change the hidden input value +$("#organizationName").result(function(event, data, formatted) { + if (data[0]){ + $("#licenseOrganizationID").val(data[0]); + $("#span_error_organizationNameResult").html(""); + } +}); + +//Attach form pre-submission event for form validation +$('#importForm').submit(function() { + return validateOnixImportForm(); +}); + +function validateOnixImportForm() { + var errorString = ""; + if($('#uploadFile').val() === "") { + errorString += _("Please select a file to upload."); + } + if($('input:checkbox:checked').length === 0) { + if(errorString.length > 0) { + errorString += "\n\n"; + } + errorString += _("At least one term type must be selected."); + } + if($('#organizationName').val() === "") { + if(errorString.length > 0) { + errorString += "\n\n"; + } + errorString += _("The Publisher / Provider field must contain a value."); + } + if(errorString !== "") { + alert(_("Please correct the following form error(s):\n\n") + errorString); + return false; + } +} \ No newline at end of file diff --git a/onix_import.php b/onix_import.php index 843f33e..48cf9a3 100644 --- a/onix_import.php +++ b/onix_import.php @@ -39,29 +39,31 @@ function searchForShortName($shortName, $array) $licenseAgreement = ""; foreach($xml->LicenseDocumentText->TextElement as $licenseText) { - $licenseAgreement .= (string)$licenseText->Text . "\n\n"; + $licenseAgreement .= "

" . preg_replace('~\R~u', "
\n", (string)$licenseText->Text) . "

\n\n"; if((string)$licenseText['id'] !== "") { - $textArray[(string)$licenseText['id']]=(string)$licenseText->Text; + $textArray[(string)$licenseText['id']]="

" . preg_replace('~\R~u', "
", (string)$licenseText->Text) . "

"; } } //Save License Agreement to documents directory, create license, attachment, and attachmentFile records and get IDs $filename = trim($xml->LicenseDetail->Description); print $xml->LicenseDetail->Description; - $licenseFile = fopen("documents/" . $filename . ".txt", "wb") or die (_("Unable to create file for license.")); + $licenseFile = fopen("documents/" . $filename . ".html", "wb") or die (_("Unable to create file for license.")); + fwrite($licenseFile, "\n\n\n\n"); fwrite($licenseFile, $licenseAgreement); + fwrite($licenseFile, "\n"); fclose($licenseFile); $licenseObj = new License(); $licenseObj->shortName = $filename; - $licenseObj->organizationID = $_POST['licenseOrganizationID']; + $licenseObj->setOrganization($_POST['organizationID'], $_POST['organizationName']); $licenseObj->save(); $licenseID = $licenseObj->primaryKey; $documentObj = new Document(); $documentObj->shortName = $filename; $documentObj->documentTypeID = 3; $documentObj->licenseID = $licenseID; - $documentObj->documentURL = $filename . ".txt"; + $documentObj->documentURL = $filename . ".html"; $documentObj->save(); $documentID = $documentObj->primaryKey; @@ -332,97 +334,7 @@ function searchForShortName($shortName, $array) " class="submit-button" /> - + From 0bc1a511c394df19cc074ea6462bc2a4b9a7b757 Mon Sep 17 00:00:00 2001 From: Ryan Chisum Date: Mon, 2 May 2016 12:40:47 -0600 Subject: [PATCH 27/55] Changes to Main Menu Spacing and Language Selector --- css/style.css | 34 +++++++++++++++- templates/header.php | 93 +++++++++++++++++++++++--------------------- 2 files changed, 81 insertions(+), 46 deletions(-) diff --git a/css/style.css b/css/style.css index 5e3191b..ad46e44 100644 --- a/css/style.css +++ b/css/style.css @@ -1581,8 +1581,10 @@ a#help:before { select#lang { border: none; - margin-left: 10px; + margin-left: 6px; background-color: #fff; + position: relative; + top: 3px; } /*--- Consistentcy for Form Buttons ---*/ @@ -1648,4 +1650,34 @@ a.save-button #importOptions { text-align: left; +} + +/*--- ONIX-PL Page ---*/ + +#importOptions{ + display: inline-block; +} + +#onixImportPage #importOptions input[type=checkbox] { + margin-right: 6px; +} + +#onixImportPage #importOptions #organizationName { + width: 100%; +} + +#onixImportPage #importOptions label.formText { + display: block; + text-align: center; +} + +/*--- Main Menu Spacing Fixes ---*/ + +table.titleTable #main-menu-titles img { + float: left; +} + +span#divider { + position: relative; + top: 3px; } \ No newline at end of file diff --git a/templates/header.php b/templates/header.php index 6ca81c1..4fa986a 100644 --- a/templates/header.php +++ b/templates/header.php @@ -91,7 +91,7 @@
- +
- - +
  @@ -109,13 +109,57 @@ } ?> -
settings->authModule == 'Y'){ echo ""._("logout")." | Help"; } ?> +
settings->authModule == 'Y'){ echo ""._("logout")." | Help | "; } ?> + + + + +
+ - -
From 4307941add7875a2f1a31ca2279f4b0381a1dc96 Mon Sep 17 00:00:00 2001 From: Bradley Droubay Date: Thu, 12 May 2016 14:27:46 -0600 Subject: [PATCH 51/55] Hello, logout, and help translations --- locale/fr_FR/LC_MESSAGES/messages.mo | Bin 24317 -> 24412 bytes locale/fr_FR/LC_MESSAGES/messages.po | 59 +++++++++++++++------------ templates/header.php | 4 +- 3 files changed, 36 insertions(+), 27 deletions(-) diff --git a/locale/fr_FR/LC_MESSAGES/messages.mo b/locale/fr_FR/LC_MESSAGES/messages.mo index 51dd42af715a78da58169e235cb81381676ab250..f089bd37deb16a7edd8a5e6a181b8fdc30d6acc9 100644 GIT binary patch delta 7166 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 M?}k=v8oAf=KX\n" "Language-Team: \n" @@ -1160,13 +1160,13 @@ msgstr "Fichier de la pièce jointe supprimé avec succès." msgid "Status has been updated" msgstr "Statut mis à jour" -#: calendar.php:21 in_progress.php:23 index.php:23 templates/header.php:180 -#: templates/header.php:235 templates/header.php:283 +#: calendar.php:21 in_progress.php:23 index.php:23 templates/header.php:181 +#: templates/header.php:236 templates/header.php:284 msgid "Home" msgstr "Accueil" -#: calendar.php:34 templates/header.php:209 templates/header.php:264 -#: templates/header.php:312 +#: calendar.php:34 templates/header.php:210 templates/header.php:265 +#: templates/header.php:313 msgid "Calendar" msgstr "Calendrier" @@ -1231,8 +1231,8 @@ msgstr " jours " msgid "Participants: " msgstr "Participants :" -#: compare.php:22 templates/header.php:201 templates/header.php:256 -#: templates/header.php:304 +#: compare.php:22 templates/header.php:202 templates/header.php:257 +#: templates/header.php:305 msgid "Expression Comparison" msgstr "Comparaison des expressions" @@ -1376,7 +1376,7 @@ msgstr "" "Le nom de la licence et de l'organisation doivent être indiqués. Réessayez à " "nouveau." -#: templates/header.php:84 +#: templates/header.php:85 msgid "" "JavaScript must be enabled in order for you to use CORAL. However, it seems " "JavaScript is either disabled or not supported by your browser. To use " @@ -1387,59 +1387,71 @@ msgstr "" "Pour utiliser CORAL, activez JavaScript en modifiant les options de votre " "navigateur, puis " -#: templates/header.php:84 +#: templates/header.php:85 msgid "try again" msgstr "réessayez" -#: templates/header.php:106 +#: templates/header.php:107 msgid "Licensing" msgstr "Licences" -#: templates/header.php:107 +#: templates/header.php:108 msgid "Powered by" msgstr "Alimenté par" -#: templates/header.php:141 +#: templates/header.php:114 +msgid "Hello" +msgstr "Bonjour" + +#: templates/header.php:124 +msgid "logout" +msgstr "Se déconnecter" + +#: templates/header.php:124 +msgid "Help" +msgstr "Aide" + +#: templates/header.php:142 msgid "Invalid translation route!" msgstr "Chemin vers les traductions invalide !" -#: templates/header.php:187 templates/header.php:242 templates/header.php:290 +#: templates/header.php:188 templates/header.php:243 templates/header.php:291 msgid "New License" msgstr "Ajouter licence" -#: templates/header.php:194 templates/header.php:249 templates/header.php:297 +#: templates/header.php:195 templates/header.php:250 templates/header.php:298 msgid "License In Progress" msgstr "Licences en cours" -#: templates/header.php:217 templates/header.php:272 templates/header.php:320 +#: templates/header.php:218 templates/header.php:273 templates/header.php:321 msgid "ONIX-PL File Import" msgstr "ONIX-PL Importer" -#: templates/header.php:224 +#: templates/header.php:225 msgid "Admin" msgstr "Admin" -#: templates/header.php:341 +#: templates/header.php:342 msgid "Change Module" msgstr "Changer de module" -#: templates/header.php:344 +#: templates/header.php:345 msgid "Main Menu" msgstr "Menu principal" -#: templates/header.php:349 +#: templates/header.php:350 msgid "Resources" msgstr "Ressources" -#: templates/header.php:354 +#: templates/header.php:355 msgid "Organizations" msgstr "Organisations" -#: templates/header.php:359 +#: templates/header.php:360 msgid "Usage Statistics" msgstr "Statistiques d'utilisation" -#: templates/header.php:364 +#: templates/header.php:365 msgid "Management" msgstr "Gestion" @@ -1450,9 +1462,6 @@ msgstr "Rapport des termes" #~ msgid "Hello, " #~ msgstr "Bonjour, " -#~ msgid "logout" -#~ msgstr "Se déconnecter" - #~ msgid "Usage Staistics" #~ msgstr "Statistiques d'utilisation" diff --git a/templates/header.php b/templates/header.php index 7744691..670a03b 100644 --- a/templates/header.php +++ b/templates/header.php @@ -111,7 +111,7 @@