diff --git a/application/config/fhcomplete.php b/application/config/fhcomplete.php index dfb690278..7d116f927 100644 --- a/application/config/fhcomplete.php +++ b/application/config/fhcomplete.php @@ -237,10 +237,10 @@ $config['fhc_acl'] = array 'wawi.tbl_zahlungstyp' => 'basis/zahlungstyp', // Temporary - 'extension.tbl_budgetantrag' => 'basis/kostenstelle', - 'extension.tbl_budgetposition' => 'basis/kostenstelle', - 'extension.tbl_budgetstatus' => 'basis/kostenstelle', - 'extension.tbl_budgetantrag_status' => 'basis/kostenstelle', + 'extension.tbl_budget_antrag' => 'basis/kostenstelle', + 'extension.tbl_budget_position' => 'basis/kostenstelle', + 'extension.tbl_budget_status' => 'basis/kostenstelle', + 'extension.tbl_budget_antrag_status' => 'basis/kostenstelle', 'extension.tbl_dsms_anonymisierung' => 'dsms/export', DMS_PATH => 'fs/dms', diff --git a/application/controllers/jobs/Prestudentstatus.php b/application/controllers/jobs/Prestudentstatus.php index 2f3e3aa95..7d9bb60b7 100644 --- a/application/controllers/jobs/Prestudentstatus.php +++ b/application/controllers/jobs/Prestudentstatus.php @@ -61,7 +61,8 @@ class Prestudentstatus extends FHC_Controller tbl_prestudentstatus.status_kurzbz, tbl_prestudent.studiengang_kz, tbl_prestudentstatus.studienplan_id, - tbl_studienplan.orgform_kurzbz'); + tbl_studienplan.orgform_kurzbz, + tbl_prestudent.person_id'); $this->PrestudentstatusModel->addJoin('public.tbl_prestudent', 'prestudent_id'); $this->PrestudentstatusModel->addJoin('lehre.tbl_studienplan', 'studienplan_id','LEFT'); $this->PrestudentstatusModel->addJoin('lehre.tbl_studienordnung', 'studienordnung_id','LEFT'); @@ -105,6 +106,14 @@ class Prestudentstatus extends FHC_Controller $this->PrestudentstatusModel->update($pk_arr, array('studienplan_id' => $studienplan->retval[0]->studienplan_id)); $sum_corrected++; + + if($row_status->status_kurzbz == 'Interessent') + { + $this->correctReihungstest( + $row_status->person_id, + $row_status->studienplan_id, + $studienplan->retval[0]->studienplan_id); + } } } else @@ -124,4 +133,58 @@ class Prestudentstatus extends FHC_Controller echo "Not Corrected:".$sum_notcorrected."\n"; echo "Overall incorrect:".$sum_overall."\n"; } + + /** + * Corrects the Assignment to a Placement Test + * Corrects the Studyplan and adds the Studyplan to the Placement test + * @param $person_id ID of the Person + * @param $studienplan_id_old ID of the old Studyplan + * @param $studienplan_id ID of the new Studyplan + */ + private function correctReihungstest($person_id, $studienplan_id_old, $studienplan_id) + { + $this->load->model('crm/RtPerson_model', 'RtPersonModel'); + $this->load->model('crm/RtStudienplan_model', 'RtStudienplanModel'); + + $this->RtPersonModel->resetQuery(); + // Correct also Assignments to Placement test + $this->RtPersonModel->addJoin( + 'public.tbl_reihungstest', + 'tbl_reihungstest.reihungstest_id = tbl_rt_person.rt_id' + ); + + $rt = $this->RtPersonModel->loadWhere(array( + "person_id" => $person_id, + "studienplan_id" => $studienplan_id_old + )); + + // "tbl_reihungstest.datum > " => date('Y-m-d H:i:s') + + if(hasData($rt)) + { + foreach($rt->retval as $row_rt) + { + // Update RTPerson Record + $this->RtPersonModel->update($row_rt->rt_person_id, array( + 'studienplan_id' => $studienplan_id, + 'updateamum' => date('Y-m-d H:i:s'), + 'updatevon' => 'cron' + )); + + // Add new Studyplan to RtStudienplan if missing + $rt_studienplan = $this->RtStudienplanModel->loadWhere(array( + "reihungstest_id" => $row_rt->reihungstest_id, + "studienplan_id" => $studienplan_id + )); + + if(!hasData($rt_studienplan)) + { + $this->RtStudienplanModel->insert(array( + "reihungstest_id" => $row_rt->reihungstest_id, + "studienplan_id" => $studienplan_id + )); + } + } + } + } } diff --git a/application/models/accounting/Kostenstelle_model.php b/application/models/accounting/Kostenstelle_model.php index 4342327f7..f338b69d5 100644 --- a/application/models/accounting/Kostenstelle_model.php +++ b/application/models/accounting/Kostenstelle_model.php @@ -15,39 +15,20 @@ class Kostenstelle_model extends DB_Model /** * Gets all active Kostenstellen for a geschaeftsjahr, as determined by the geschaeftsjahrvon and bis fields * Gets Kostenstellen of current Geschaeftsjahr if Geschaeftsjahr not specified - * Only the Kostenstellen for which a permission exists are returned! * @param $geschaeftsjahr - * @return array|null + * @return array|null Kostenstellen or empty array if no geschaeftsjahr found */ public function getActiveKostenstellenForGeschaeftsjahr($geschaeftsjahr = null) { $this->load->model('organisation/geschaeftsjahr_model', 'GeschaeftsjahrModel'); - if ($geschaeftsjahr === null) + $gj = $this->_getGeschaeftsjahr($geschaeftsjahr); + + if (hasData($gj)) { - $lgj = $this->GeschaeftsjahrModel->getCurrGeschaeftsjahr(); + $gjstart = $gj->retval[0]->start; - if ($lgj->error) - return error($lgj->retval); - - if (count($lgj->retval) < 1) - return success(array()); - - $geschaeftsjahr = $lgj->retval[0]->geschaeftsjahr_kurzbz; - } - - $this->GeschaeftsjahrModel->addSelect('start, ende'); - $gj = $this->GeschaeftsjahrModel->load($geschaeftsjahr); - - if ($gj->error) - return error($gj->retval); - - if (count($gj->retval) < 1) - return success(array()); - - $gjstart = $gj->retval[0]->start; - - $query = 'SELECT kostenstelle_id, kurzbz, wawi.tbl_kostenstelle.bezeichnung, wawi.tbl_kostenstelle.aktiv + $query = 'SELECT kostenstelle_id, kurzbz, wawi.tbl_kostenstelle.bezeichnung, wawi.tbl_kostenstelle.aktiv, wawi.tbl_kostenstelle.oe_kurzbz FROM wawi.tbl_kostenstelle LEFT JOIN public.tbl_geschaeftsjahr kgjvon on wawi.tbl_kostenstelle.geschaeftsjahrvon = kgjvon.geschaeftsjahr_kurzbz LEFT JOIN public.tbl_geschaeftsjahr kgjbis on wawi.tbl_kostenstelle.geschaeftsjahrbis = kgjbis.geschaeftsjahr_kurzbz @@ -57,6 +38,96 @@ class Kostenstelle_model extends DB_Model (DATE ? < kgjbis.ende OR wawi.tbl_kostenstelle.geschaeftsjahrbis IS NULL) ORDER BY wawi.tbl_kostenstelle.bezeichnung'; - return $this->execQuery($query, array($gjstart, $gjstart)); + return $this->execQuery($query, array($gjstart, $gjstart)); + } + else + { + return success(array()); + } + } + + /** + * Gets all active Kostenstellen for a geschaeftsjahr, as determined by the geschaeftsjahrvon and bis fields, together with their oe, + * hierarchally sorted, gets Kostenstellen of current Geschaeftsjahr if Geschaeftsjahr not specified + * @param null $geschaeftsjahr + * @return array|null + */ + public function getActiveKostenstellenForGeschaeftsjahrWithOe($geschaeftsjahr = null) + { + $this->load->model('organisation/geschaeftsjahr_model', 'GeschaeftsjahrModel'); + + $gj = $this->_getGeschaeftsjahr($geschaeftsjahr); + + if (hasData($gj)) + { + $gjstart = $gj->retval[0]->start; + + $query = "WITH RECURSIVE tree (oe_kurzbz, bezeichnung, path, level, organisationseinheittyp_kurzbz) AS ( + SELECT oe_kurzbz, + bezeichnung || ' (' || organisationseinheittyp_kurzbz || ')' AS bezeichnung, + oe_kurzbz || '|' AS path, 0 AS level, + organisationseinheittyp_kurzbz + FROM tbl_organisationseinheit + WHERE oe_parent_kurzbz IS NULL + AND aktiv = true + UNION ALL + SELECT oe.oe_kurzbz, + oe.bezeichnung || ' (' || oe.organisationseinheittyp_kurzbz || ')' AS bezeichnung, + tree.path || oe.oe_kurzbz || '|' AS path, tree.level + 1 AS level, + oe.organisationseinheittyp_kurzbz + FROM tree JOIN tbl_organisationseinheit oe ON (tree.oe_kurzbz = oe.oe_parent_kurzbz) + ) + SELECT oe_kurzbz, + SUBSTRING(REGEXP_REPLACE(path, '[A-z]+\|', '-', 'g') || rec.bezeichnung, 2) AS oe_description, + level, + kst.kostenstelle_id as kostenstelle_id, + kst.kurzbz as kostenstelle_kurzbz, + kst.bezeichnung as kostenstelle_bezeichnung, + kst.aktiv as kostenstelle_aktiv + FROM tree rec + JOIN ( + SELECT kostenstelle_id, kurzbz, wawi.tbl_kostenstelle.bezeichnung, wawi.tbl_kostenstelle.aktiv, wawi.tbl_kostenstelle.oe_kurzbz as kstoe + FROM wawi.tbl_kostenstelle + LEFT JOIN public.tbl_geschaeftsjahr kgjvon on wawi.tbl_kostenstelle.geschaeftsjahrvon = kgjvon.geschaeftsjahr_kurzbz + LEFT JOIN public.tbl_geschaeftsjahr kgjbis on wawi.tbl_kostenstelle.geschaeftsjahrbis = kgjbis.geschaeftsjahr_kurzbz + WHERE + (DATE ? >= kgjvon.start OR wawi.tbl_kostenstelle.geschaeftsjahrvon IS NULL) + AND + (DATE ? < kgjbis.ende OR wawi.tbl_kostenstelle.geschaeftsjahrbis IS NULL) + ORDER BY wawi.tbl_kostenstelle.bezeichnung) + kst on kst.kstoe = rec.oe_kurzbz + ORDER BY level"; + + return $this->execQuery($query, array($gjstart, $gjstart)); + } + else + { + return success(array()); + } + } + + /** + * Gets either given Geschaeftsjahr, current Geschaeftsjahr if not given, or chronologically last Geschaeftsjahr if there is no current + * @param $geschaeftsjahr + * @return mixed + */ + protected function _getGeschaeftsjahr($geschaeftsjahr) + { + if ($geschaeftsjahr === null) + { + $gj = $this->GeschaeftsjahrModel->getCurrGeschaeftsjahr(); + if (!hasData($gj)) + { + $this->GeschaeftsjahrModel->addSelect('geschaeftsjahr_kurzbz, start, ende'); + $this->GeschaeftsjahrModel->addOrder('start', 'DESC'); + $gj = $this->GeschaeftsjahrModel->load(); + } + } + else + { + $this->GeschaeftsjahrModel->addSelect('geschaeftsjahr_kurzbz, start, ende'); + $gj = $this->GeschaeftsjahrModel->load($geschaeftsjahr); + } + return $gj; } } diff --git a/application/models/crm/RtStudienplan_model.php b/application/models/crm/RtStudienplan_model.php new file mode 100644 index 000000000..0e6fdeef3 --- /dev/null +++ b/application/models/crm/RtStudienplan_model.php @@ -0,0 +1,15 @@ +dbTable = "public.tbl_rt_studienplan"; + $this->pk = array("rt_id", "studienplan_id"); + $this->hasSequence = false; + } +} diff --git a/application/models/organisation/Organisationseinheit_model.php b/application/models/organisation/Organisationseinheit_model.php index 37b269f79..75791de1b 100644 --- a/application/models/organisation/Organisationseinheit_model.php +++ b/application/models/organisation/Organisationseinheit_model.php @@ -115,4 +115,49 @@ class Organisationseinheit_model extends DB_Model return $this->execQuery($query, array($oe_kurzbz)); } + + /** + * Liefert die ChildNodes einer Organisationseinheit + * @param $oe_kurzbz + * @return Array mit den Childs inkl dem Uebergebenen Element + */ + public function getChilds($oe_kurzbz) + { + $query = " + WITH RECURSIVE oes(oe_kurzbz, oe_parent_kurzbz) as + ( + SELECT oe_kurzbz, oe_parent_kurzbz FROM public.tbl_organisationseinheit + WHERE oe_kurzbz=? + UNION ALL + SELECT o.oe_kurzbz, o.oe_parent_kurzbz FROM public.tbl_organisationseinheit o, oes + WHERE o.oe_parent_kurzbz=oes.oe_kurzbz + ) + SELECT oe_kurzbz + FROM oes + GROUP BY oe_kurzbz;"; + + return $this->execQuery($query, array($oe_kurzbz)); + } + + /** + * Liefert die OEs die im Tree ueberhalb der uebergebene OE liegen + * @param $oe_kurzbz + */ + public function getParents($oe_kurzbz) + { + $query= + "WITH RECURSIVE oes(oe_kurzbz, oe_parent_kurzbz) as + ( + SELECT oe_kurzbz, oe_parent_kurzbz FROM public.tbl_organisationseinheit + WHERE oe_kurzbz=? and aktiv = true + UNION ALL + SELECT o.oe_kurzbz, o.oe_parent_kurzbz FROM public.tbl_organisationseinheit o, oes + WHERE o.oe_kurzbz=oes.oe_parent_kurzbz and aktiv = true + ) + SELECT oe_kurzbz + FROM oes"; + + return $this->execQuery($query, array($oe_kurzbz)); + } + } diff --git a/composer.json b/composer.json index 8558cbdd5..25d4e3407 100644 --- a/composer.json +++ b/composer.json @@ -1,270 +1,283 @@ -{ - "name": "fh-complete/fhc-core", - "type": "app", - "description": "FH-Complete Core", - "keywords": [ - "fhc", - "fh-complete", - "campusmanagement" - ], - "homepage": "https://github.com/FH-Complete/FHC-Core", - "license": "GPLv3", - "authors": [ - { - "name": "Christian Paminger", - "email": "christian.paminger@fhcomplete.org", - "homepage": "http://fhcomplete.org" - }, - { - "name": "Andreas Österreicher", - "email": "oesi@technikum-wien.at", - "homepage": "http://fhcomplete.org" - } - ], - "support": { - "email": "info@fhcomplete.org", - "forum": "https://plus.google.com/communities/113278802529782592610", - "wiki": "http://wiki.fhcomplete.org/" - }, - "repositories": [ - { - "type": "package", - "package": { - "name": "codeigniter-restserver", - "version": "2.6", - "dist": { - "url": "https://github.com/chriskacerguis/codeigniter-restserver/archive/master.zip", - "type": "zip" - } - } - }, - { - "type": "package", - "package": { - "name": "jsoneditor", - "version": "5.5.6", - "dist": { - "url": "https://github.com/josdejong/jsoneditor/archive/v5.5.6.zip", - "type": "zip" - } - } - }, - { - "type": "package", - "package": { - "name": "json-forms", - "version": "1.4.0", - "dist": { - "url": "https://github.com/brutusin/json-forms/archive/v1.4.0.zip", - "type": "zip" - } - } - }, - { - "type": "package", - "package": { - "name": "borgar/textile-js", - "version": "1.0", - "source": { - "url": "https://github.com/borgar/textile-js.git", - "type": "git", - "reference": "master" - } - } - }, - { - "type": "package", - "package": { - "name": "rmariuzzo/jquery-checkboxes", - "version": "1.0.7", - "source": { - "url": "https://github.com/rmariuzzo/checkboxes.js.git", - "type": "git", - "reference": "081cac1eb9b504dc32be27b57f32f6d1d29a5253" - } - } - }, - { - "type": "package", - "package": { - "name": "jquery/jqueryV1", - "version": "1.12.4", - "dist": { - "type": "file", - "url": "https://code.jquery.com/jquery-1.12.4.min.js" - } - } - }, - { - "type": "package", - "package": { - "name": "jquery/jqueryV2", - "version": "2.2.4", - "dist": { - "type": "file", - "url": "https://code.jquery.com/jquery-2.2.4.min.js" - } - } - }, - { - "type": "package", - "package": { - "name": "fgelinas/timepicker", - "version": "0.3.3", - "dist": { - "url": "https://fgelinas.com/code/timepicker/releases/jquery-ui-timepicker-0.3.3.zip", - "type": "zip" - } - } - }, - { - "type": "package", - "package": { - "name": "alvaro-prieto/colResizable", - "version": "1.6", - "dist": { - "url": "https://github.com/alvaro-prieto/colResizable/archive/1.6.zip", - "type": "zip" - } - } - }, - { - "type": "package", - "package": { - "name": "tapmodo/Jcrop", - "version": "2.0.4", - "dist": { - "url": "https://github.com/tapmodo/Jcrop/archive/v2.0.4.zip", - "type": "zip" - } - } - }, - { - "type": "package", - "package": { - "name": "jquery-archive/jquery-metadata", - "version": "1.0", - "source": { - "url": "https://github.com/jquery-archive/jquery-metadata.git", - "type": "git", - "reference": "e5a9e4315675bf4d68716872ca754e858088f8ab" - } - } - }, - { - "type": "package", - "package": { - "name": "tomazdragar/SimpleCropper", - "version": "1.0", - "source": { - "url": "https://github.com/tomazdragar/SimpleCropper.git", - "type": "git", - "reference": "9750b81fa55ed07b3b429297d18ffbeac07a2cde" - } - } - }, - { - "type": "package", - "package": { - "name": "joeldbirch/superfish", - "version": "1.7.9", - "dist": { - "url": "https://github.com/joeldbirch/superfish/archive/v1.7.9.zip", - "type": "zip" - } - } - }, - { - "type": "package", - "package": { - "name": "jquery/sizzle", - "version": "1.0", - "dist": { - "url": "https://github.com/jquery/sizzle/archive/1.0.0.zip", - "type": "zip" - } - } - }, - { - "type": "package", - "package": { - "name": "nicolaskruchten/pivottable", - "version": "2.15.0", - "source": { - "url": "https://github.com/nicolaskruchten/pivottable.git", - "type": "git", - "reference": "b15ea33268b587d986371c0b6f215c36ffbb860c" - } - } - }, - { - "type": "package", - "package": { - "name": "BlackrockDigital/startbootstrap-sb-admin-2", - "version": "3.3.7", - "source": { - "url": "https://github.com/BlackrockDigital/startbootstrap-sb-admin-2.git", - "type": "git", - "reference": "master" - } - } - } - ], - "require": { - "php": ">=5.4.0", - - "alvaro-prieto/colResizable": "^1.6", - "borgar/textile-js": "1.0", - "BlackrockDigital/startbootstrap-sb-admin-2": "^3.3", - "christianbach/tablesorter": "^1.0", - - "codeigniter/framework": "3.*", - "codeigniter-restserver": "2.6", - - "components/jquery": "^3.2", - "components/jqueryui": "^1.12", - "components/font-awesome": "^4.7", - "components/angular.js": "1.3.16", - - "easyrdf/easyrdf": "0.9.*", - "fgelinas/timepicker": "^0.3.3", - "fzaninotto/faker": "1.*", - "joeldbirch/superfish": "^1.7", - - "jquery/jqueryV1": "^1.12", - "jquery/jqueryV2": "^2.2", - "jquery/sizzle": "^1.0", - - "jquery-archive/jquery-metadata": "^1.0", - - "json-forms": "1.4.0", - "jsoneditor": "5.5.6", - "kingsquare/json-schema-form": "*", - "michelf/php-markdown": "1.5.0", - "ml/json-ld": "1.*", - "mottie/tablesorter": "^2.29", - "netcarver/textile": "^3.5", - "nicolaskruchten/pivottable": "^2.15.0", - "rmariuzzo/jquery-checkboxes": "1.0.7", - - "rougin/combustor": "1.1.*", - "rougin/refinery": "*", - - "tapmodo/Jcrop": "^2.0", - "tinymce/tinymce": "4.*", - "tomazdragar/SimpleCropper": "^1.0", - "twbs/bootstrap": "^3.3", - - "zetacomponents/workflow": "1.*", - "zetacomponents/document": "1.*", - "zetacomponents/workflow-database-tiein": "1.*", - "zetacomponents/workflow-event-log-tiein": "1.*" - }, - "require-dev": { - "squizlabs/php_codesniffer": "2.*" - }, - "config": { - "bin-dir": "vendor/bin" - } -} - +{ + "name": "fh-complete/fhc-core", + "type": "app", + "description": "FH-Complete Core", + "keywords": [ + "fhc", + "fh-complete", + "campusmanagement" + ], + "homepage": "https://github.com/FH-Complete/FHC-Core", + "license": "GPLv3", + "authors": [ + { + "name": "Christian Paminger", + "email": "christian.paminger@fhcomplete.org", + "homepage": "http://fhcomplete.org" + }, + { + "name": "Andreas Österreicher", + "email": "oesi@technikum-wien.at", + "homepage": "http://fhcomplete.org" + } + ], + "support": { + "email": "info@fhcomplete.org", + "forum": "https://plus.google.com/communities/113278802529782592610", + "wiki": "http://wiki.fhcomplete.org/" + }, + "repositories": [ + { + "type": "package", + "package": { + "name": "codeigniter-restserver", + "version": "2.6", + "dist": { + "url": "https://github.com/chriskacerguis/codeigniter-restserver/archive/master.zip", + "type": "zip" + } + } + }, + { + "type": "package", + "package": { + "name": "jsoneditor", + "version": "5.5.6", + "dist": { + "url": "https://github.com/josdejong/jsoneditor/archive/v5.5.6.zip", + "type": "zip" + } + } + }, + { + "type": "package", + "package": { + "name": "json-forms", + "version": "1.4.0", + "dist": { + "url": "https://github.com/brutusin/json-forms/archive/v1.4.0.zip", + "type": "zip" + } + } + }, + { + "type": "package", + "package": { + "name": "borgar/textile-js", + "version": "1.0", + "source": { + "url": "https://github.com/borgar/textile-js.git", + "type": "git", + "reference": "master" + } + } + }, + { + "type": "package", + "package": { + "name": "rmariuzzo/jquery-checkboxes", + "version": "1.0.7", + "source": { + "url": "https://github.com/rmariuzzo/checkboxes.js.git", + "type": "git", + "reference": "081cac1eb9b504dc32be27b57f32f6d1d29a5253" + } + } + }, + { + "type": "package", + "package": { + "name": "jquery/jqueryV1", + "version": "1.12.4", + "dist": { + "type": "file", + "url": "https://code.jquery.com/jquery-1.12.4.min.js" + } + } + }, + { + "type": "package", + "package": { + "name": "jquery/jqueryV2", + "version": "2.2.4", + "dist": { + "type": "file", + "url": "https://code.jquery.com/jquery-2.2.4.min.js" + } + } + }, + { + "type": "package", + "package": { + "name": "fgelinas/timepicker", + "version": "0.3.3", + "dist": { + "url": "https://fgelinas.com/code/timepicker/releases/jquery-ui-timepicker-0.3.3.zip", + "type": "zip" + } + } + }, + { + "type": "package", + "package": { + "name": "alvaro-prieto/colResizable", + "version": "1.6", + "dist": { + "url": "https://github.com/alvaro-prieto/colResizable/archive/1.6.zip", + "type": "zip" + } + } + }, + { + "type": "package", + "package": { + "name": "tapmodo/Jcrop", + "version": "2.0.4", + "dist": { + "url": "https://github.com/tapmodo/Jcrop/archive/v2.0.4.zip", + "type": "zip" + } + } + }, + { + "type": "package", + "package": { + "name": "jquery-archive/jquery-metadata", + "version": "1.0", + "source": { + "url": "https://github.com/jquery-archive/jquery-metadata.git", + "type": "git", + "reference": "e5a9e4315675bf4d68716872ca754e858088f8ab" + } + } + }, + { + "type": "package", + "package": { + "name": "tomazdragar/SimpleCropper", + "version": "1.0", + "source": { + "url": "https://github.com/tomazdragar/SimpleCropper.git", + "type": "git", + "reference": "9750b81fa55ed07b3b429297d18ffbeac07a2cde" + } + } + }, + { + "type": "package", + "package": { + "name": "joeldbirch/superfish", + "version": "1.7.9", + "dist": { + "url": "https://github.com/joeldbirch/superfish/archive/v1.7.9.zip", + "type": "zip" + } + } + }, + { + "type": "package", + "package": { + "name": "jquery/sizzle", + "version": "1.0", + "dist": { + "url": "https://github.com/jquery/sizzle/archive/1.0.0.zip", + "type": "zip" + } + } + }, + { + "type": "package", + "package": { + "name": "nicolaskruchten/pivottable", + "version": "2.15.0", + "source": { + "url": "https://github.com/nicolaskruchten/pivottable.git", + "type": "git", + "reference": "b15ea33268b587d986371c0b6f215c36ffbb860c" + } + } + }, + { + "type": "package", + "package": { + "name": "BlackrockDigital/startbootstrap-sb-admin-2", + "version": "3.3.7", + "source": { + "url": "https://github.com/BlackrockDigital/startbootstrap-sb-admin-2.git", + "type": "git", + "reference": "e85ee3814ba12b7095024d31424cc9d19d791d05" + } + } + }, + { + "type": "package", + "package": { + "name": "ludo/jquery-treetable", + "version": "3.2.0", + "source": { + "url": "https://github.com/ludo/jquery-treetable.git", + "type": "git", + "reference": "73690a9df26dbc1a49981f9335df2a9cd9808813" + } + } + } + ], + "require": { + "php": ">=5.4.0", + + "alvaro-prieto/colResizable": "^1.6", + "borgar/textile-js": "1.0", + "BlackrockDigital/startbootstrap-sb-admin-2": "^3.3", + "christianbach/tablesorter": "^1.0", + + "codeigniter/framework": "3.*", + "codeigniter-restserver": "2.6", + + "components/jquery": "^3.2", + "components/jqueryui": "^1.12", + "components/font-awesome": "^4.7", + "components/angular.js": "1.3.16", + + "easyrdf/easyrdf": "0.9.*", + "fgelinas/timepicker": "^0.3.3", + "fzaninotto/faker": "1.*", + "joeldbirch/superfish": "^1.7", + + "jquery/jqueryV1": "^1.12", + "jquery/jqueryV2": "^2.2", + "jquery/sizzle": "^1.0", + + "jquery-archive/jquery-metadata": "^1.0", + + "json-forms": "1.4.0", + "jsoneditor": "5.5.6", + "kingsquare/json-schema-form": "*", + "ludo/jquery-treetable": "^3.2", + "michelf/php-markdown": "1.5.0", + "ml/json-ld": "1.*", + "mottie/tablesorter": "^2.29", + "netcarver/textile": "^3.5", + "nicolaskruchten/pivottable": "^2.15.0", + "rmariuzzo/jquery-checkboxes": "1.0.7", + + "rougin/combustor": "1.1.*", + "rougin/refinery": "*", + + "tapmodo/Jcrop": "^2.0", + "tinymce/tinymce": "4.*", + "tomazdragar/SimpleCropper": "^1.0", + "twbs/bootstrap": "^3.3", + + "zetacomponents/workflow": "1.*", + "zetacomponents/document": "1.*", + "zetacomponents/workflow-database-tiein": "1.*", + "zetacomponents/workflow-event-log-tiein": "1.*" + }, + "require-dev": { + "squizlabs/php_codesniffer": "2.*" + }, + "config": { + "bin-dir": "vendor/bin" + } +} + diff --git a/composer.lock b/composer.lock index 9964729cd..506882e61 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "329973fd68eea79f7c67464cbd121d58", - "content-hash": "bf03cef0846a79959456abfccf90730e", + "hash": "00d176bc89167feef10405c7457b6d6a", + "content-hash": "8cd3ddef525145593a8fe885184ef4cc", "packages": [ { "name": "BlackrockDigital/startbootstrap-sb-admin-2", @@ -69,16 +69,16 @@ }, { "name": "codeigniter/framework", - "version": "3.1.7", + "version": "3.1.8", "source": { "type": "git", "url": "https://github.com/bcit-ci/CodeIgniter.git", - "reference": "02a0518e1c56ba3506f370362ac5ebdb8a138312" + "reference": "71e647782764184e3aab4faffe6d99176758979f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bcit-ci/CodeIgniter/zipball/02a0518e1c56ba3506f370362ac5ebdb8a138312", - "reference": "02a0518e1c56ba3506f370362ac5ebdb8a138312", + "url": "https://api.github.com/repos/bcit-ci/CodeIgniter/zipball/71e647782764184e3aab4faffe6d99176758979f", + "reference": "71e647782764184e3aab4faffe6d99176758979f", "shasum": "" }, "require": { @@ -98,7 +98,7 @@ ], "description": "The CodeIgniter framework", "homepage": "https://codeigniter.com", - "time": "2018-01-13 11:57:11" + "time": "2018-03-22 14:48:55" }, { "name": "components/angular.js", @@ -441,16 +441,16 @@ }, { "name": "components/jquery", - "version": "3.2.1", + "version": "3.3.1", "source": { "type": "git", "url": "https://github.com/components/jquery.git", - "reference": "e5534d4ab8e80c159553d507e358ed20a806d3bf" + "reference": "459648cda77875519c5da3ae1dd0ed5d170aa649" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/components/jquery/zipball/e5534d4ab8e80c159553d507e358ed20a806d3bf", - "reference": "e5534d4ab8e80c159553d507e358ed20a806d3bf", + "url": "https://api.github.com/repos/components/jquery/zipball/459648cda77875519c5da3ae1dd0ed5d170aa649", + "reference": "459648cda77875519c5da3ae1dd0ed5d170aa649", "shasum": "" }, "type": "component", @@ -479,7 +479,7 @@ ], "description": "jQuery JavaScript Library", "homepage": "http://jquery.com", - "time": "2017-03-21 07:01:49" + "time": "2018-03-04 13:23:48" }, { "name": "components/jqueryui", @@ -916,6 +916,16 @@ "description": "A framework-agnostic PHP Implementation for generating simple forms based on json-schema", "time": "2014-07-10 12:27:19" }, + { + "name": "ludo/jquery-treetable", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/ludo/jquery-treetable.git", + "reference": "73690a9df26dbc1a49981f9335df2a9cd9808813" + }, + "type": "library" + }, { "name": "michelf/php-markdown", "version": "1.5.0", @@ -1016,17 +1026,17 @@ }, { "name": "ml/json-ld", - "version": "1.0.7", + "version": "1.0.8", "target-dir": "ML/JsonLD", "source": { "type": "git", "url": "https://github.com/lanthaler/JsonLD.git", - "reference": "f9dfe184f0da9ce0e0ffdddabf6d93d01787ac91" + "reference": "da8efc590273f0420e79cb110778508875690bde" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lanthaler/JsonLD/zipball/f9dfe184f0da9ce0e0ffdddabf6d93d01787ac91", - "reference": "f9dfe184f0da9ce0e0ffdddabf6d93d01787ac91", + "url": "https://api.github.com/repos/lanthaler/JsonLD/zipball/da8efc590273f0420e79cb110778508875690bde", + "reference": "da8efc590273f0420e79cb110778508875690bde", "shasum": "" }, "require": { @@ -1035,7 +1045,8 @@ "php": ">=5.3.0" }, "require-dev": { - "json-ld/tests": "@dev" + "json-ld/tests": "1.0", + "phpunit/phpunit": "^4" }, "type": "library", "autoload": { @@ -1061,20 +1072,20 @@ "JSON-LD", "jsonld" ], - "time": "2016-10-10 08:57:56" + "time": "2018-01-28 12:53:52" }, { "name": "mottie/tablesorter", - "version": "v2.29.4", + "version": "v2.30.1", "source": { "type": "git", "url": "https://github.com/Mottie/tablesorter.git", - "reference": "bf7339036ce11c91f55281825b1b601d18b67ed8" + "reference": "c74a34b070002776133757faa5b8613988b42470" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Mottie/tablesorter/zipball/bf7339036ce11c91f55281825b1b601d18b67ed8", - "reference": "bf7339036ce11c91f55281825b1b601d18b67ed8", + "url": "https://api.github.com/repos/Mottie/tablesorter/zipball/c74a34b070002776133757faa5b8613988b42470", + "reference": "c74a34b070002776133757faa5b8613988b42470", "shasum": "" }, "require": { @@ -1112,7 +1123,7 @@ "sorting", "table" ], - "time": "2018-01-18 23:30:03" + "time": "2018-03-19 12:17:24" }, { "name": "netcarver/textile", @@ -1590,16 +1601,16 @@ }, { "name": "symfony/console", - "version": "v2.8.33", + "version": "v2.8.38", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "a4bd0f02ea156cf7b5138774a7ba0ab44d8da4fe" + "reference": "7f78892d900c72a40acd1fe793c856ef0c110f26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a4bd0f02ea156cf7b5138774a7ba0ab44d8da4fe", - "reference": "a4bd0f02ea156cf7b5138774a7ba0ab44d8da4fe", + "url": "https://api.github.com/repos/symfony/console/zipball/7f78892d900c72a40acd1fe793c856ef0c110f26", + "reference": "7f78892d900c72a40acd1fe793c856ef0c110f26", "shasum": "" }, "require": { @@ -1647,7 +1658,7 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2018-01-03 07:36:31" + "time": "2018-04-03 05:20:27" }, { "name": "symfony/debug", @@ -1708,16 +1719,16 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.6.0", + "version": "v1.7.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296" + "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296", - "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b", + "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b", "shasum": "" }, "require": { @@ -1729,7 +1740,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6-dev" + "dev-master": "1.7-dev" } }, "autoload": { @@ -1763,11 +1774,11 @@ "portable", "shim" ], - "time": "2017-10-11 12:05:26" + "time": "2018-01-30 19:27:44" }, { "name": "symfony/yaml", - "version": "v2.8.33", + "version": "v2.8.38", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", @@ -1827,16 +1838,16 @@ }, { "name": "tinymce/tinymce", - "version": "4.7.5", + "version": "4.7.11", "source": { "type": "git", "url": "https://github.com/tinymce/tinymce-dist.git", - "reference": "256a571d890d4e15da618019994f072cd43209bc" + "reference": "a7178e20d6053b92a177900531ffd2cdcb77f77c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tinymce/tinymce-dist/zipball/256a571d890d4e15da618019994f072cd43209bc", - "reference": "256a571d890d4e15da618019994f072cd43209bc", + "url": "https://api.github.com/repos/tinymce/tinymce-dist/zipball/a7178e20d6053b92a177900531ffd2cdcb77f77c", + "reference": "a7178e20d6053b92a177900531ffd2cdcb77f77c", "shasum": "" }, "type": "component", @@ -1857,7 +1868,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-2.1" + "LGPL-2.1-only" ], "description": "Web based JavaScript HTML WYSIWYG editor control.", "homepage": "http://www.tinymce.com", @@ -1869,7 +1880,7 @@ "tinymce", "wysiwyg" ], - "time": "2018-01-22 13:09:23" + "time": "2018-04-11 09:26:11" }, { "name": "tomazdragar/SimpleCropper", @@ -1934,16 +1945,16 @@ }, { "name": "twig/twig", - "version": "v1.35.0", + "version": "v1.35.3", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "daa657073e55b0a78cce8fdd22682fddecc6385f" + "reference": "b48680b6eb7d16b5025b9bfc4108d86f6b8af86f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/daa657073e55b0a78cce8fdd22682fddecc6385f", - "reference": "daa657073e55b0a78cce8fdd22682fddecc6385f", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/b48680b6eb7d16b5025b9bfc4108d86f6b8af86f", + "reference": "b48680b6eb7d16b5025b9bfc4108d86f6b8af86f", "shasum": "" }, "require": { @@ -1951,8 +1962,8 @@ }, "require-dev": { "psr/container": "^1.0", - "symfony/debug": "~2.7", - "symfony/phpunit-bridge": "~3.3@dev" + "symfony/debug": "^2.7", + "symfony/phpunit-bridge": "^3.3" }, "type": "library", "extra": { @@ -1995,7 +2006,7 @@ "keywords": [ "templating" ], - "time": "2017-09-27 18:06:46" + "time": "2018-03-20 04:25:58" }, { "name": "zetacomponents/base", diff --git a/skin/admintemplate.css b/skin/admintemplate.css index 88719b74c..5df64ce30 100644 --- a/skin/admintemplate.css +++ b/skin/admintemplate.css @@ -50,4 +50,10 @@ position: absolute; top: 2px; font-size: 1.3em; +} + +/*table footer line (e.g. for sums)*/ +.table-bordered > tfoot > tr > td, .table-bordered > tfoot > tr > th +{ + border-top-width: 2px; } \ No newline at end of file