Merge branch 'master' into ausbildungsvertragdocuments

This commit is contained in:
alex
2019-07-04 13:29:25 +02:00
754 changed files with 5480 additions and 67081 deletions
+506 -293
View File
@@ -1,33 +1,32 @@
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
class ReihungstestJob extends CLI_Controller
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
// Load models
$this->load->model('crm/Reihungstest_model', 'ReihungstestModel');
$this->load->model('crm/RtStudienplan_model', 'RtStudienplanModel');
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
$this->load->model('organisation/Studienplan_model', 'StudienplanModel');
// Load models
$this->load->model('crm/Reihungstest_model', 'ReihungstestModel');
$this->load->model('crm/RtStudienplan_model', 'RtStudienplanModel');
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
$this->load->model('organisation/Studienplan_model', 'StudienplanModel');
// Load helpers
$this->load->helper('hlp_sancho_helper');
}
// Load helpers
$this->load->helper('hlp_sancho_helper');
}
/**
* runReihungstestJob
*/
public function runReihungstestJob()
{
// Get study plans that have no assigned placement tests yet
$result = $this->ReihungstestModel->checkMissingReihungstest();
/**
* runReihungstestJob
*/
public function runReihungstestJob()
{
// Get study plans that have no assigned placement tests yet
$result = $this->ReihungstestModel->checkMissingReihungstest();
$missing_rt_arr = array();
if (hasData($result))
@@ -39,8 +38,8 @@ class ReihungstestJob extends CLI_Controller
show_error($result->error);
}
// Get free places
$result = $this->ReihungstestModel->getFreePlaces();
// Get free places
$result = $this->ReihungstestModel->getFreePlaces();
$free_places_arr = array();
if (hasData($result))
@@ -52,8 +51,8 @@ class ReihungstestJob extends CLI_Controller
show_error($result->error);
}
// Prepare data for mail template 'ReihungstestJob'
$content_data_arr = $this->_getContentData($missing_rt_arr, $free_places_arr);
// Prepare data for mail template 'ReihungstestJob'
$content_data_arr = $this->_getContentData($missing_rt_arr, $free_places_arr);
// Send email in Sancho design
if (!empty($missing_rt_arr) || !empty($free_places_arr))
@@ -66,15 +65,37 @@ class ReihungstestJob extends CLI_Controller
}
}
/**
* runZentraleReihungstestAnmeldefristAssistenzJob
/*
* Sends an email to all assistants of a placement test when an anmeldeschluss has been reached
*
* @param integer $degreeProgram. Kennzahl of Degree Program to check
* @param string $bcc. Optional. BCC-Mailadress to send the Mails to
* @param string $from. Optional. Sender-Mailadress shown to recipient
*/
public function runZentraleReihungstestAnmeldefristAssistenzJob()
public function runZentraleReihungstestAnmeldefristAssistenzJob($degreeProgram, $bcc = null, $from = null)
{
// Get placement tests where registration date was yesterday
$result = $this->ReihungstestModel->checkReachedRegistrationDate(11000);
// Encode Params
if ($bcc != '')
{
// $bcc can be given as null-string, so check that too
if ($bcc == 'null')
{
$bcc = '';
}
else
{
$bcc = urldecode($bcc);
}
}
if ($from != '')
{
$from = urldecode($from);
}
$reachedRegistration_rt_arr = array();
// Get placement tests where registration date was yesterday
$result = $this->ReihungstestModel->checkReachedRegistrationDate($degreeProgram);
$reachedRegistration_rt_arr = array();
if (hasData($result))
{
@@ -85,11 +106,11 @@ class ReihungstestJob extends CLI_Controller
show_error($result->error);
}
$applicants_arr = array();
$applicants_arr = array();
foreach ($reachedRegistration_rt_arr as $reihungstest)
{
$applicants = $this->ReihungstestModel->getApplicantsOfPlacementTestForCronjob($reihungstest->reihungstest_id);
foreach ($reachedRegistration_rt_arr as $reihungstest)
{
$applicants = $this->ReihungstestModel->getApplicantsOfPlacementTestForCronjob($reihungstest->reihungstest_id);
if (hasData($applicants))
{
@@ -102,6 +123,7 @@ class ReihungstestJob extends CLI_Controller
// Get all Bachelor-Degree-Programs with Mailadress
$bachelorStudiengeange = $this->StudiengangModel->loadStudiengaengeFromTyp('b');
$bachelorStudiengeange_arr = array();
if (hasData($bachelorStudiengeange))
{
@@ -117,29 +139,13 @@ class ReihungstestJob extends CLI_Controller
foreach ($bachelorStudiengeange_arr as $bachelorStudiengang)
{
$studiengang_kuerzel = strtoupper($bachelorStudiengang->typ.$bachelorStudiengang->kurzbz);
$applicants_list = '';
$applicantCounter = 0;
$rowstyle = 'style="background-color: #EEEEEE; padding: 4px;"';
$mailReceipients = ''; // String with all mailadresses
$mailcontent_data_arr = array();
foreach ($applicants_arr as $applicant)
{
if ($bachelorStudiengang->studiengang_kz == $applicant->studiengang_kz)
{
$mailReceipients .= $applicant->email. ';';
$applicantCounter ++;
$applicants_list .= '
<tr '.$rowstyle.'>
<td>'. $applicant->orgform_kurzbz. '</td>
<td>'. $applicant->ausbildungssemester. '</td>
<td>'. $applicant->nachname. '</td>
<td>'. $applicant->vorname. '</td>
<td>'. $applicant->zgv_kurzbz. '</td>
<td>'. $applicant->prioritaet. '</td>
<td>'. $applicant->qualifikationskurs. '</td>
<td><a href="mailto:'. $applicant->email. '">'. $applicant->email. '</a></td>
</tr>
';
}
}
if ($applicantCounter == 0)
@@ -149,30 +155,14 @@ class ReihungstestJob extends CLI_Controller
}
else
{
$headerstyle = 'style="background: #DCE4EF; border: 1px solid #FFF; padding: 4px; text-align: left;"';
$mailcontent = '<p style="font-family: verdana, sans-serif;">Der Anmeldeschluss für den zentralen Reihungstest am ' . date_format(date_create($reihungstest->datum), 'd.m.Y') . ' um ' . $reihungstest->uhrzeit . ' Uhr wurde gestern erreicht.</p>';
$mailcontent .= '
<p style="font-family: verdana, sans-serif;">Folgende ' . $applicantCounter . ' InteressentInnen des Studiengangs ' . $studiengang_kuerzel . ' nehmen daran teil:</p>
<table width="100%" style="cellpadding: 3px; font-family: verdana, sans-serif; border: 1px solid #000000;">
<thead>
<th '.$headerstyle.'>OrgForm</th>
<th '.$headerstyle.'>Semester</th>
<th '.$headerstyle.'>Nachname</th>
<th '.$headerstyle.'>Vorname</th>
<th '.$headerstyle.'>ZGV</th>
<th '.$headerstyle.'>Priorität</th>
<th '.$headerstyle.'>Qualikurs</th>
<th '.$headerstyle.'>E-Mail</th>
</thead>
<tbody>
';
$mailcontent .= $applicants_list;
$mailcontent .= '
</tbody>
</table>
';
$mailcontent .= '<p style="font-family: verdana, sans-serif;"><a href="mailto:?bcc=' . $mailReceipients . '">Mail an alle schicken</a></p>';
<p style="font-family: verdana, sans-serif;"><b>' . $applicantCounter . '</b> InteressentIn(nen) des Studiengangs ' . $studiengang_kuerzel . ' nehmen daran teil:</p>
<p style="font-family: verdana, sans-serif;">
<a href="'.APP_ROOT.'vilesci/stammdaten/auswertung_fhtw.php?reihungstest='.$reihungstest->reihungstest_id.'&studiengang='.$bachelorStudiengang->studiengang_kz.'" target="_blank">
Liste der Anmeldungen
</a>
</p>';
}
$mailcontent_data_arr['table'] = $mailcontent;
@@ -182,41 +172,66 @@ class ReihungstestJob extends CLI_Controller
sendSanchoMail(
'Sancho_ReihungstestteilnehmerJob',
$mailcontent_data_arr,
array($bachelorStudiengang->email,'kindlm@technikum-wien.at'),
$bachelorStudiengang->email,
'Anmeldeschluss Reihungstest ' . date_format(date_create($reihungstest->datum), 'd.m.Y') . ' ' . $reihungstest->uhrzeit . ' Uhr',
'sancho_header_min_bw.jpg',
'sancho_footer_min_bw.jpg');
'sancho_footer_min_bw.jpg',
$from,
'',
$bcc);
}
}
}
}
/**
* Checks, if an applicant was assigned to a test after Anmeldefrist
/*
* Checks, if an applicant was assigned to a test after Anmeldefrist and sends an email to all responsible assistants
*
* @param integer $degreeProgram. Kennzahl of Degree Program to check
* @param string $bcc. Optional. BCC-Mailadress to send the Mails to
* @param string $from. Optional. Sender-Mailadress shown to recipient
*/
public function runZentraleReihungstestNachtraeglichHinzugefuegtJob()
public function runZentraleReihungstestNachtraeglichHinzugefuegtJob($degreeProgram, $bcc = null, $from = null)
{
// Encode Params
if ($bcc != '')
{
// $bcc can be given as null-string, so check that too
if ($bcc == 'null')
{
$bcc = '';
}
else
{
$bcc = urldecode($bcc);
}
}
if ($from != '')
{
$from = urldecode($from);
}
// Get applicants that have been added to a test after Anmeldefrist
$result = $this->ReihungstestModel->getApplicantAssignedAfterDate(11000);
$result = $this->ReihungstestModel->getApplicantAssignedAfterDate($degreeProgram);
$applicants_after_anmeldefrist_arr = array();
$applicants_after_anmeldefrist_arr = array();
if (hasData($result))
{
$applicants_after_anmeldefrist_arr = $result->retval;
}
elseif (isError($result))
{
show_error($result->error);
}
if (hasData($result))
{
$applicants_after_anmeldefrist_arr = $result->retval;
}
elseif (isError($result))
{
show_error($result->error);
}
$studiengang = '';
$mailReceipients = ''; // String with all mailadresses
$mailcontent_data_arr = array();
$headerstyle = 'style="background: #DCE4EF; border: 1px solid #FFF; padding: 4px; text-align: left;"';
$rowstyle = 'style="background-color: #EEEEEE; padding: 4px;"';
$mailcontent = '';
$applicants_list = '';
$studiengang = '';
$mailReceipients = ''; // String with all mailadresses
$mailcontent_data_arr = array();
$headerstyle = 'style="background: #DCE4EF; border: 1px solid #FFF; padding: 4px; text-align: left;"';
$rowstyle = 'style="background-color: #EEEEEE; padding: 4px;"';
$mailcontent = '';
$applicants_list = '';
if (count($applicants_after_anmeldefrist_arr) > 0)
{
@@ -229,20 +244,27 @@ class ReihungstestJob extends CLI_Controller
$bachelorStudiengang = $this->StudiengangModel->load($studiengang);
$mailcontent .= $applicants_list;
$mailcontent .= '</tbody></table>';
$mailcontent .= '<p style="font-family: verdana, sans-serif;"><a href="mailto:?bcc=' . $mailReceipients . '">Mail an alle schicken</a></p>';
$mailcontent .= '<p style="font-family: verdana, sans-serif;">
<a href="'.APP_ROOT.'vilesci/stammdaten/auswertung_fhtw.php?reihungstest='.$applicant->reihungstest_id.'&studiengang='.$studiengang.'" target="_blank">
Liste der Anmeldungen
</a>
</p>';
$mailcontent_data_arr['table'] = $mailcontent;
sendSanchoMail(
'Sancho_ReihungstestteilnehmerJob',
$mailcontent_data_arr,
array($bachelorStudiengang->retval[0]->email,'kindlm@technikum-wien.at'),
$bachelorStudiengang->retval[0]->email,
'InteressentIn nach Reihungstest-Anmeldeschluss hinzugefügt',
'sancho_header_min_bw.jpg',
'sancho_footer_min_bw.jpg');
'sancho_footer_min_bw.jpg',
$from,
'',
$bcc);
$applicants_list = '';
$mailcontent_data_arr = array();
}
$mailcontent = '<p style="font-family: verdana, sans-serif;">Folgende InteressentInnen wurden <b>nach</b> der Anmeldefrist zu einem Reihungstest hinzugefügt.</p>';
$mailcontent = '<p style="font-family: verdana, sans-serif;">Folgende InteressentInnen wurden <b>nach</b> der Anmeldefrist zu einem Reihungstest hinzugefügt.<br>Details siehe Link</p>';
$mailcontent .= '
<table width="100%" style="cellpadding: 3px; font-family: verdana, sans-serif; border: 1px solid #000000;">
<thead>
@@ -252,18 +274,14 @@ class ReihungstestJob extends CLI_Controller
<th ' . $headerstyle . '>Semester</th>
<th ' . $headerstyle . '>Nachname</th>
<th ' . $headerstyle . '>Vorname</th>
<th ' . $headerstyle . '>ZGV</th>
<th ' . $headerstyle . '>Priorität</th>
<th ' . $headerstyle . '>Qualikurs</th>
<th ' . $headerstyle . '>E-Mail</th>
</thead>
<tbody>
';
}
}
$studiengang = $applicant->studiengang_kz;
$mailReceipients .= $applicant->email . ';';
$applicants_list .= '
$studiengang = $applicant->studiengang_kz;
$mailReceipients .= $applicant->email . ';';
$applicants_list .= '
<tr ' . $rowstyle . '>
<td>' . date_format(date_create($applicant->datum), 'd.m.Y') . '</td>
<td>' . $applicant->uhrzeit . '</td>
@@ -271,25 +289,28 @@ class ReihungstestJob extends CLI_Controller
<td>' . $applicant->ausbildungssemester . '</td>
<td>' . $applicant->nachname . '</td>
<td>' . $applicant->vorname . '</td>
<td>' . $applicant->zgv_kurzbz . '</td>
<td>' . $applicant->prioritaet . '</td>
<td>' . $applicant->qualifikationskurs . '</td>
<td><a href="mailto:' . $applicant->email . '">' . $applicant->email . '</a></td>
</tr>
';
};
$bachelorStudiengang = $this->StudiengangModel->load($studiengang);
$mailcontent .= $applicants_list;
$mailcontent .= '</tbody></table>';
$mailcontent .= '<p style="font-family: verdana, sans-serif;"><a href="mailto:?bcc=' . $mailReceipients . '">Mail an alle schicken</a></p>';
$mailcontent .= '<p style="font-family: verdana, sans-serif;">
<a href="'.APP_ROOT.'vilesci/stammdaten/auswertung_fhtw.php?reihungstest='.$applicant->reihungstest_id.'&studiengang='.$studiengang.'" target="_blank">
Liste der Anmeldungen
</a>
</p>';
$mailcontent_data_arr['table'] = $mailcontent;
sendSanchoMail(
'Sancho_ReihungstestteilnehmerJob',
$mailcontent_data_arr,
array($bachelorStudiengang->retval[0]->email,'kindlm@technikum-wien.at'),
$bachelorStudiengang->retval[0]->email,
'InteressentIn nach Reihungstest-Anmeldeschluss hinzugefügt',
'sancho_header_min_bw.jpg',
'sancho_footer_min_bw.jpg');
'sancho_footer_min_bw.jpg',
$from,
'',
$bcc);
}
}
@@ -300,82 +321,86 @@ class ReihungstestJob extends CLI_Controller
* @param string $bcc. Optional. BCC-Mailadress to send the Mails to
* @param string $from. Optional. Sender-Mailadress shown to recipient
*/
public function remindApplicantsOfPlacementTest()
public function remindApplicantsOfPlacementTest($degreeProgram, $bcc = null, $from = null)
{
$degreeProgram = $this->input->get('degreeprogram');
$bcc = $this->input->get('bcc');
$from = $this->input->get('from');
// Encode Params
if ($bcc != '')
{
$bcc = urldecode($bcc);
// $bcc can be given as null-string, so check that too
if ($bcc == 'null')
{
$bcc = '';
}
else
{
$bcc = urldecode($bcc);
}
}
if ($from != '')
{
$from = urldecode($from);
}
// Get placement tests with testdate within the next 2 weeks
$resultNextTestDates = $this->ReihungstestModel->getNextPlacementtests($degreeProgram, 14);
if (hasData($resultNextTestDates))
{
$nextTestDates = $resultNextTestDates->retval;
$enddate = '';
// Loop through the dates
foreach ($nextTestDates as $testDates)
{
$workingdays = 0;
$testsOndate = array();
// Get placement tests with testdate within the next 2 weeks
$resultNextTestDates = $this->ReihungstestModel->getNextPlacementtests($degreeProgram, 14);
if (hasData($resultNextTestDates))
{
$nextTestDates = $resultNextTestDates->retval;
$enddate = '';
// Loop through the dates
foreach ($nextTestDates as $testDates)
{
$workingdays = 0;
$testsOndate = array();
// Deduct days till 3 working days are reached
for ($i = 1; ; $i++)
{
if (isDateWorkingDay($testDates->datum, $i) === true)
{
$workingdays++;
}
if ($workingdays == 3)
{
$enddate = date("Y-m-d", strtotime("$testDates->datum -".$i." days"));
break;
}
else
{
continue;
}
}
// Deduct days till 3 working days are reached
for ($i = 1; ; $i++)
{
if (isDateWorkingDay($testDates->datum, $i) === true)
{
$workingdays++;
}
if ($workingdays == 3)
{
$enddate = date("Y-m-d", strtotime("$testDates->datum -" . $i . " days"));
break;
}
else
{
continue;
}
}
// If $enddate is today -> load all tests of $testDates->datum
if (date("Y-m-d", strtotime($enddate)) == date('Y-m-d'))
{
$resultTestsOnDate = $this->ReihungstestModel->getTestsOnDate($testDates->datum, $degreeProgram);
// If $enddate is today -> load all tests of $testDates->datum
if (date("Y-m-d", strtotime($enddate)) == date('Y-m-d'))
{
$resultTestsOnDate = $this->ReihungstestModel->getTestsOnDate($testDates->datum, $degreeProgram);
if (hasData($resultTestsOnDate))
{
$testsOndate = $resultTestsOnDate->retval;
}
elseif (isError($resultTestsOnDate))
{
show_error($resultTestsOnDate->error);
}
}
if (hasData($resultTestsOnDate))
{
$testsOndate = $resultTestsOnDate->retval;
}
elseif (isError($resultTestsOnDate))
{
show_error($resultTestsOnDate->error);
}
}
if (!isEmptyArray($testsOndate))
{
foreach ($testsOndate as $reihungstest)
{
// Loads applicants of a test
$applicants = $this->ReihungstestModel->getApplicantsOfPlacementTest($reihungstest->reihungstest_id);
if (!isEmptyArray($testsOndate))
{
foreach ($testsOndate as $reihungstest)
{
// Loads applicants of a test
$applicants = $this->ReihungstestModel->getApplicantsOfPlacementTest($reihungstest->reihungstest_id);
if (hasData($applicants))
{
$applicants_arr = $applicants->retval;
}
elseif (isError($applicants))
{
show_error($applicants->error);
}
if (hasData($applicants))
{
$applicants_arr = $applicants->retval;
}
elseif (isError($applicants))
{
show_error($applicants->error);
}
foreach ($applicants_arr as $applicant)
{
@@ -386,71 +411,247 @@ class ReihungstestJob extends CLI_Controller
$mailcontent_data_arr['rt_datum'] = date_format(date_create($reihungstest->datum), 'd.m.Y');
$mailcontent_data_arr['rt_uhrzeit'] = date_format(date_create($reihungstest->uhrzeit), 'H:i');
$mailcontent_data_arr['rt_raum'] = $applicant->planbezeichnung;
$mailcontent_data_arr['wegbeschreibung'] = $applicant->lageplan;
if ($applicant->lageplan == '')
{
$mailcontent_data_arr['wegbeschreibung'] = 'Für diesen Raum liegt noch keine Wegbeschreibung vor.<br><br>No directions were found for this room';
}
else
{
$mailcontent_data_arr['wegbeschreibung'] = $applicant->lageplan;
}
sendSanchoMail(
'Sancho_RemindApplicantsOfTest',
$mailcontent_data_arr,
$applicant->email,
'Ihre Anmeldung zum Reihungstest - Reminder / Your registration for the placement test - Reminder',
DEFAULT_SANCHO_HEADER_IMG,
DEFAULT_SANCHO_FOOTER_IMG,
$from,
'',
$bcc);
}
}
}
}
}
}
sendSanchoMail(
'Sancho_RemindApplicantsOfTest',
$mailcontent_data_arr,
$applicant->email,
'Ihre Anmeldung zum Reihungstest - Reminder / Your registration for the placement test - Reminder',
DEFAULT_SANCHO_HEADER_IMG,
DEFAULT_SANCHO_FOOTER_IMG,
$from,
'',
$bcc);
}
}
}
}
}
}
// ------------------------------------------------------------------------
// Private methods
/**
* Returns associative array with data as needed in the reihungstest job template.
* @param array $missing_rt_arr Array with studienpläne, which have no assigned placement tests.
* @param array $free_places_arr Array with info and amount of free placement test places.
* @return array
*/
private function _getContentData($missing_rt_arr, $free_places_arr)
{
$style_tbl1 = ' cellpadding="0" cellspacing="10" width="100%" style="font-family: courier, verdana, sans-serif; font-size: 0.95em; border: 1px solid #000000;" ';
$style_tbl2 = ' cellpadding="0" cellspacing="20" width="100%" style="font-family: courier, verdana, sans-serif; font-size: 0.95em; border: 1px solid #000000;" ';
/**
* This job sends eMail(s) to the relevant stg assistance(s) informing about:
* All applicants, who have sent new applications AFTER they had absolved a
* placement test in the actual studiensemester
* AND who have been confirmed yesterday.
*/
public function mailNewApplicants()
{
// Get yesterdays confirmed applicants for Bachelor-studies
$this->load->model('crm/Prestudentstatus_model', 'PrestudentstatusModel');
$this->PrestudentstatusModel->addSelect('
tbl_person.person_id,
tbl_prestudentstatus.prestudent_id,
tbl_prestudent.studiengang_kz,
tbl_prestudentstatus.studiensemester_kurzbz,
tbl_prestudentstatus.bestaetigtam,
tbl_prestudentstatus.bewerbung_abgeschicktamum
');
$this->PrestudentstatusModel->addJoin('public.tbl_prestudent', 'prestudent_id');
$this->PrestudentstatusModel->addJoin('public.tbl_studiengang', 'studiengang_kz');
$this->PrestudentstatusModel->addJoin('public.tbl_studiengangstyp', 'typ');
$this->PrestudentstatusModel->addJoin('public.tbl_person', 'person_id');
// Prepare HTML table with study plans that have no placement tests yet
if (!empty($missing_rt_arr))
{
$studienplan_list
= '
<table'. $style_tbl2.'>
$yesterdays_applicants_arr = $this->PrestudentstatusModel->loadWhere('
status_kurzbz = \'Interessent\' AND
typ = \'b\' AND
bestaetigtam = current_date - 1
');
// Retrieve the person_ids of yesterdays confirmed applicants
$person_id_arr = array();
if (hasData($yesterdays_applicants_arr))
{
foreach ($yesterdays_applicants_arr->retval as $yesterdays_applicant)
{
if (isset($yesterdays_applicant->person_id)) {
$person_id_arr[] = $yesterdays_applicant->person_id;
}
}
}
elseif (isError($yesterdays_applicants_arr))
{
show_error($yesterdays_applicants_arr->error);
}
// Get all other prestudenten of the given persons.
if (!isEmptyArray($person_id_arr))
{
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
$this->PrestudentModel->addDistinct();
$this->PrestudentModel->addSelect('
person_id,
tbl_reihungstest.studiensemester_kurzbz,
tbl_reihungstest.reihungstest_id,
(SELECT(tbl_reihungstest.datum::text || \' \' || tbl_reihungstest.uhrzeit::text)::timestamp) AS reihungstest_timestamp
');
$this->PrestudentModel->addJoin('public.tbl_studiengang', 'studiengang_kz');
$this->PrestudentModel->addJoin('public.tbl_studiengangstyp', 'typ');
$this->PrestudentModel->addJoin('public.tbl_prestudentstatus', 'prestudent_id');
$this->PrestudentModel->addJoin('public.tbl_person', 'person_id');
$this->PrestudentModel->addJoin('public.tbl_rt_person', 'person_id');
$this->PrestudentModel->addJoin('public.tbl_reihungstest', 'tbl_reihungstest.reihungstest_id = tbl_rt_person.rt_id');
// Store them, if they have already absolved a placement test in the same study term they have applied for.
$placement_absolvents_arr = $this->PrestudentModel->loadWhere('
person_id IN (' . implode(', ', $person_id_arr) . ') AND
typ = \'b\' AND
teilgenommen = \'t\' AND
tbl_reihungstest.studiensemester_kurzbz IN (
SELECT
studiensemester_kurzbz
FROM
public.tbl_studiensemester
WHERE
ende >= now()
)
');
}
// Store data to be send in the email-link
$result_arr = array();
foreach($yesterdays_applicants_arr->retval as $yesterdays_applicant)
{
foreach ($placement_absolvents_arr->retval as $placement_absolvent)
{
if ($yesterdays_applicant->person_id == $placement_absolvent->person_id &&
$yesterdays_applicant->studiensemester_kurzbz == $placement_absolvent->studiensemester_kurzbz &&
$yesterdays_applicant->bewerbung_abgeschicktamum >= $placement_absolvent->reihungstest_timestamp)
{
$obj = new stdClass();
$obj->prestudent_id = $yesterdays_applicant->prestudent_id; // prestudent_id of the yesterdays applicant
$obj->studiengang_kz = $yesterdays_applicant->studiengang_kz; // study program of interest of the yesterdays applicant
$obj->reihungstest_id = $placement_absolvent->reihungstest_id; // reihungstest_id of absolved reihungstest of that person
$result_arr[]= $obj;
}
}
}
// Sort by STG. This is important to send the mails clustered by STG to the different STG assistances.
usort($result_arr, function ($a, $b)
{
if ($a->studiengang_kz == $b->studiengang_kz) {
return 0;
}
return ($a->studiengang_kz < $b->studiengang_kz) ? -1 : 1;
});
$to = ''; // mail recipient (stg assistance)
$content_arr = array(); // url paths to the new applicants
$base_link = base_url('vilesci/stammdaten/auswertung_fhtw.php');
$i = 0; // loop counter
$len = count($result_arr);
// Loop trough list of new applicants
foreach($result_arr as $result)
{
$studiengang = $this->StudiengangModel->load($result->studiengang_kz);
$mail_stg_assistance = $studiengang->retval[0]->email;
// If first loop
if ($i == 0)
{
$to = $mail_stg_assistance; // set recipient initially
}
// If new study is encountered but is not the first loop
if ($to != $mail_stg_assistance && $i != 0)
{
// Prepare content for mail template
$content_data_arr = $this->_getContentDataNewApplicant($content_arr);
// Send mail
sendSanchoMail(
'BewerberNachReihungstest',
$content_data_arr,
$to,
'Neue Bewerbungen nach absolviertem Reihungstest',
'sancho_header_min_bw.jpg',
'sancho_footer_min_bw.jpg'
);
// Reset content for new study applicants & reset recipient (new stg assistance)
$content_arr = array($base_link. '?reihungstest='. $result->reihungstest_id. '&prestudent_id='. $result->prestudent_id);
$to = $mail_stg_assistance;
}
// If same study
else
{
// just add content
$content_arr[]= $base_link. '?reihungstest='. $result->reihungstest_id. '&prestudent_id='. $result->prestudent_id; // add to content
}
// If last loop
if (($i == $len - 1))
{
// Prepare content for mail template
$content_data_arr = $this->_getContentDataNewApplicant($content_arr);
// Send mail
sendSanchoMail(
'BewerberNachReihungstest',
$content_data_arr,
$to,
'Neue Bewerbungen nach absolviertem Reihungstest',
'sancho_header_min_bw.jpg',
'sancho_footer_min_bw.jpg'
);
}
$i++; // iterate counter
}
}
// ------------------------------------------------------------------------
// Private methods
/**
* Returns associative array with data as needed in the reihungstest job template.
* @param array $missing_rt_arr Array with studienpläne, which have no assigned placement tests.
* @param array $free_places_arr Array with info and amount of free placement test places.
* @return array
*/
private function _getContentData($missing_rt_arr, $free_places_arr)
{
$style_tbl1 = ' cellpadding="0" cellspacing="10" width="100%" style="font-family: courier, verdana, sans-serif; font-size: 0.95em; border: 1px solid #000000;" ';
$style_tbl2 = ' cellpadding="0" cellspacing="20" width="100%" style="font-family: courier, verdana, sans-serif; font-size: 0.95em; border: 1px solid #000000;" ';
// Prepare HTML table with study plans that have no placement tests yet
if (!empty($missing_rt_arr)) {
$studienplan_list
= '
<table' . $style_tbl2 . '>
';
foreach ($missing_rt_arr as $rt)
{
$studienplan_list .= '
<tr><td>'. $rt->bezeichnung. '</td></tr>
foreach ($missing_rt_arr as $rt) {
$studienplan_list .= '
<tr><td>' . $rt->bezeichnung . '</td></tr>
';
}
}
$studienplan_list .= '
$studienplan_list .= '
</table>
';
}
else
{
$studienplan_list = '
<table'. $style_tbl1.'>
} else {
$studienplan_list = '
<table' . $style_tbl1 . '>
<tr><td>Alles okay! Alle Studienpläne haben zumindest einen Reihungstest.</td></tr>
</table>
';
}
}
// Prepare HTML table with information and amount of free places
if (!empty($free_places_arr))
{
$freie_plaetze_list = '
<table'. $style_tbl2.'>
// Prepare HTML table with information and amount of free places
if (!empty($free_places_arr)) {
$freie_plaetze_list = '
<table' . $style_tbl2 . '>
<tr>
<th>Fakultät</th>
<th>Reihungstesttermine</th>
@@ -458,51 +659,67 @@ class ReihungstestJob extends CLI_Controller
</tr>
';
foreach ($free_places_arr as $free_place)
{
$datum = new DateTime($free_place->datum);
$style_alarm = ($free_place->freie_plaetze <= 5) ? ' style=" color: red; font-weight: bold" ' : ''; // mark if <=5 free places
foreach ($free_places_arr as $free_place) {
$datum = new DateTime($free_place->datum);
$style_alarm = ($free_place->freie_plaetze <= 5) ? ' style=" color: red; font-weight: bold" ' : ''; // mark if <=5 free places
$freie_plaetze_list .= '
$freie_plaetze_list .= '
<tr>
<td width="350">'. $free_place->fakultaet. '</td>
<td align="center">'. $datum->format('d.m.Y'). '</td>
<td align="center"'. $style_alarm.'>'. $free_place->freie_plaetze. '</td>
<td width="350">' . $free_place->fakultaet . '</td>
<td align="center">' . $datum->format('d.m.Y') . '</td>
<td align="center"' . $style_alarm . '>' . $free_place->freie_plaetze . '</td>
</tr>
';
}
}
$freie_plaetze_list .= '
$freie_plaetze_list .= '
</table>
';
}
else
{
$freie_plaetze_list = '
<table'. $style_tbl1.'>
} else {
$freie_plaetze_list = '
<table' . $style_tbl1 . '>
<tr><td>Es gibt heute keine Ergebnisse zu freien Reihungstestplätze.</td></tr>
</table>
';
}
}
// Set associative array with the prepared HTML tables and URL be used by the template's variables
$content_data_arr['studienplan_list'] = $studienplan_list;
$content_data_arr['freie_plaetze_list'] = $freie_plaetze_list;
$content_data_arr['link'] = site_url('/organisation/Reihungstest');
// Set associative array with the prepared HTML tables and URL be used by the template's variables
$content_data_arr['studienplan_list'] = $studienplan_list;
$content_data_arr['freie_plaetze_list'] = $freie_plaetze_list;
$content_data_arr['link'] = site_url('/organisation/Reihungstest');
return $content_data_arr;
}
return $content_data_arr;
}
/**
* Returns associative array with data as needed in the BewerberNachReihungstest-template.
* @param array $content_arr Array with links to the testtool evaluation page of the new applicants.
* @return array
*/
private function _getContentDataNewApplicant($content_arr)
{
$content = '';
$counter = 1;
foreach ($content_arr as $row)
{
$content .= '<br>Link zu: <a href="'. $row. '">Bewerber '. $counter. '</a>';
$counter++;
}
$content_data_arr['link'] = $content;
return $content_data_arr;
}
/**
* Checks the upcoming placement tests if there are correct studyplans assigned
* If there are invalid studyplans assigned (outdated because there exists a new version),
* it tries to find a better one and assigns it additionaly
*/
public function correctStudienplan()
{
// get all placement tests with incorrect studyplan
$qry = "
/**
* Checks the upcoming placement tests if there are correct studyplans assigned
* If there are invalid studyplans assigned (outdated because there exists a new version),
* it tries to find a better one and assigns it additionaly
*/
public function correctStudienplan()
{
// get all placement tests with incorrect studyplan
$qry = "
SELECT
tbl_reihungstest.reihungstest_id,
tbl_studienplan.studienplan_id,
@@ -535,42 +752,38 @@ class ReihungstestJob extends CLI_Controller
)
";
$db = new DB_Model();
$result_rt = $db->execReadOnlyQuery($qry);
$db = new DB_Model();
$result_rt = $db->execReadOnlyQuery($qry);
if(hasdata($result_rt))
{
foreach ($result_rt->retval as $row_rt)
{
// find an active studyplan for the same degree program with is valid in this semester
$result_stpl = $this->StudienplanModel->getStudienplaeneBySemester(
$row_rt->studiengang_kz,
$row_rt->studiensemester_kurzbz
);
if (hasdata($result_rt)) {
foreach ($result_rt->retval as $row_rt) {
// find an active studyplan for the same degree program with is valid in this semester
$result_stpl = $this->StudienplanModel->getStudienplaeneBySemester(
$row_rt->studiengang_kz,
$row_rt->studiensemester_kurzbz
);
if(hasData($result_stpl))
{
foreach($result_stpl->retval as $row_stpl)
{
// Add new Studyplan to RtStudienplan if missing
$rt_studienplan = $this->RtStudienplanModel->loadWhere(array(
"reihungstest_id" => $row_rt->reihungstest_id,
"studienplan_id" => $row_stpl->studienplan_id
));
if (hasData($result_stpl)) {
foreach ($result_stpl->retval as $row_stpl) {
// Add new Studyplan to RtStudienplan if missing
$rt_studienplan = $this->RtStudienplanModel->loadWhere(array(
"reihungstest_id" => $row_rt->reihungstest_id,
"studienplan_id" => $row_stpl->studienplan_id
));
if(!hasData($rt_studienplan))
{
echo "\nAdding StudienplanId: $row_stpl->studienplan_id";
echo " to ReihungstestId: $row_rt->reihungstest_id";
if (!hasData($rt_studienplan)) {
echo "\nAdding StudienplanId: $row_stpl->studienplan_id";
echo " to ReihungstestId: $row_rt->reihungstest_id";
$this->RtStudienplanModel->insert(array(
"reihungstest_id" => $row_rt->reihungstest_id,
"studienplan_id" => $row_stpl->studienplan_id
));
}
}
}
}
}
}
$this->RtStudienplanModel->insert(array(
"reihungstest_id" => $row_rt->reihungstest_id,
"studienplan_id" => $row_stpl->studienplan_id
));
}
}
}
}
}
}
}
+67 -4
View File
@@ -28,6 +28,7 @@ class Gradelist extends Auth_Controller
$this->load->model('education/zeugnisnote_model', 'ZeugnisnoteModel');
$this->load->model('education/lehrveranstaltung_model', 'LehrveranstaltungModel');
$this->load->model('codex/note_model', 'NoteModel');
$this->load->model('education/lehrveranstaltung_model', 'LehrveranstaltungModel');
$this->loadPhrases(
array(
@@ -163,6 +164,14 @@ class Gradelist extends Auth_Controller
'studienplan_bezeichnung' => $stpl_bezeichnung,
);
}
$result_zuordnung = $this->LehrveranstaltungModel->getLvsByStudent($uid, $row_status->studiensemester_kurzbz);
if(isSuccess($result_zuordnung) && hasData($result_zuordnung))
{
$this->setZuordnung(
$result_zuordnung,
$courses['semester'][$row_status->studiensemester_kurzbz]['lvs']
);
}
}
// Load Grades and add to studyplan
@@ -186,6 +195,7 @@ class Gradelist extends Auth_Controller
if (!isset($row_noten->found))
{
$result_lv = $this->LehrveranstaltungModel->load($row_noten->lehrveranstaltung_id);
$result_stg = $this->StudiengangModel->load($result_lv->retval[0]->studiengang_kz);
$courses['semester'][$row_noten->studiensemester_kurzbz]['lvs_nonstpl'][] = array(
'lehrveranstaltung_id' => $row_noten->lehrveranstaltung_id,
'lehrtyp_kurzbz' => $result_lv->retval[0]->lehrtyp_kurzbz,
@@ -194,13 +204,20 @@ class Gradelist extends Auth_Controller
'sws' => $result_lv->retval[0]->sws,
'zeugnis' => $result_lv->retval[0]->zeugnis,
'bezeichnung' => $result_lv->retval[0]->bezeichnung,
'kurzbz' => $result_lv->retval[0]->kurzbz,
'ects' => $result_lv->retval[0]->ects,
'semester' => $result_lv->retval[0]->semester,
'note' => $row_noten->note,
'datum' => $row_noten->benotungsdatum
'datum' => $row_noten->benotungsdatum,
'zugeordnet' => true,
'studiengang_kurzbz' => $result_stg->retval[0]->kurzbzlang
);
if(!isset($courses['semester'][$row_noten->studiensemester_kurzbz]['data']['ectssumme_nonstpl']))
$courses['semester'][$row_noten->studiensemester_kurzbz]['data']['ectssumme_nonstpl'] = 0;
if(!isset($courses['semester'][$row_noten->studiensemester_kurzbz]['data']['swssumme_nonstpl']))
$courses['semester'][$row_noten->studiensemester_kurzbz]['data']['swssumme_nonstpl'] = 0;
$courses['semester'][$row_noten->studiensemester_kurzbz]['data']['ectssumme_nonstpl'] += $result_lv->retval[0]->ects;
$courses['semester'][$row_noten->studiensemester_kurzbz]['data']['swssumme_nonstpl'] += $result_lv->retval[0]->sws;
}
}
@@ -210,6 +227,8 @@ class Gradelist extends Auth_Controller
$num_grades_overall = 0;
$sum_ects_overall = 0;
$sum_ects_positiv_overall = 0;
$sum_sws_overall = 0;
$sum_sws_positiv_overall = 0;
// Calculate Sum and Average
foreach ($courses['semester'] as $stsem => $row_lvs)
@@ -219,6 +238,8 @@ class Gradelist extends Auth_Controller
$num_grades = 0;
$sum_ects = 0;
$sum_ects_positiv = 0;
$sum_sws = 0;
$sum_sws_positiv = 0;
$sum_grades = 0;
$notendurchschnitt = 0;
$sum_gradeweighted = 0;
@@ -235,8 +256,12 @@ class Gradelist extends Auth_Controller
$sum_gradeweighted += $row['ects'] * $this->_grades[$row['note']]['notenwert'];
}
$sum_ects += $row['ects'];
$sum_sws += $row['sws'];
if ($this->_grades[$row['note']]['positiv'])
{
$sum_ects_positiv += $row['ects'];
$sum_sws_positiv += $row['sws'];
}
}
if ($num_grades > 0)
$notendurchschnitt = $sum_grades / $num_grades;
@@ -254,11 +279,15 @@ class Gradelist extends Auth_Controller
$sum_ectsweighted_overall += $sum_ectsweighted;
$sum_ects_overall += $sum_ects;
$sum_ects_positiv_overall += $sum_ects_positiv;
$sum_sws_overall += $sum_sws;
$sum_sws_positiv_overall += $sum_sws_positiv;
$courses['semester'][$stsem]['data']['notendurchschnitt'] = number_format($notendurchschnitt, 2);
$courses['semester'][$stsem]['data']['notendurchschnittgewichtet'] = number_format($notendurchschnittgewichtet, 2);
$courses['semester'][$stsem]['data']['ectssumme'] = number_format($sum_ects,2);
$courses['semester'][$stsem]['data']['ectssumme_positiv'] = number_formaT($sum_ects_positiv,2);
$courses['semester'][$stsem]['data']['ectssumme_positiv'] = number_format($sum_ects_positiv,2);
$courses['semester'][$stsem]['data']['swssumme'] = number_format($sum_sws,2);
$courses['semester'][$stsem]['data']['swssumme_positiv'] = number_format($sum_sws_positiv,2);
}
if ($num_grades_overall > 0)
@@ -275,7 +304,9 @@ class Gradelist extends Auth_Controller
'notendurchschnitt' => number_format($notendurchschnitt, 2),
'notendurchschnittgewichtet' => number_format($notendurchschnittgewichtet, 2),
'ectssumme' => $sum_ects_overall,
'ectssumme_positiv' => $sum_ects_positiv_overall
'ectssumme_positiv' => $sum_ects_positiv_overall,
'swssumme' => $sum_sws_overall,
'swssumme_positiv' => $sum_sws_positiv_overall
);
return $courses;
}
@@ -306,6 +337,37 @@ class Gradelist extends Auth_Controller
}
}
/**
* Checks if the Student is Assigned to this course and marks the course
* @param $zuordnung reference to array of all assigned courses.
* @param $courses reference to array of all courses.
* @param $studiensemester_kurzbz Studiensemester of the Course and Grades
*/
private function setZuordnung(&$zuordnung, &$courses)
{
$subtree_zugeordnet = false;
foreach ($courses as $key => $value)
{
foreach ($zuordnung->retval as $zuordnungkey => $row_zuordnung)
{
if ($row_zuordnung->lehrveranstaltung_id == $value['lehrveranstaltung_id'])
{
$courses[$key]['zugeordnet'] = true;
$subtree_zugeordnet = true;
}
if (isset($value['childs']))
{
if ($this->setZuordnung($zuordnung, $courses[$key]['childs']) === true)
{
$courses[$key]['zugeordnet'] = true;
$subtree_zugeordnet = true;
}
}
}
}
return $subtree_zugeordnet;
}
/**
* Reads all the Courses recursivly and Returns an Array with the Grades and ECTS
* @param $courses array of courses
@@ -320,7 +382,8 @@ class Gradelist extends Auth_Controller
{
$grades[] = array(
'note' => $row['note'],
'ects' => $row['ects']
'ects' => $row['ects'],
'sws' => $row['sws']
);
}
@@ -65,6 +65,10 @@ class InfoCenter extends Auth_Controller
)
);
// Name of Interessentenstatus
const INTERESSENTSTATUS = 'Interessent';
const ABGEWIESENERSTATUS = 'Abgewiesener';
// Statusgruende for which no Studiengangsfreigabemessage should be sent
private $_statusgruendeNoStgFreigabeMessage = array('FIT Programm', 'FIT program', 'FIT programme');
@@ -171,7 +175,6 @@ class InfoCenter extends Auth_Controller
/**
* Personal details page of the InfoCenter tool
* Initialization function, gets person and prestudent data and loads the view with the data
* @param $person_id
*/
public function showDetails()
{
@@ -346,7 +349,6 @@ class InfoCenter extends Auth_Controller
/**
* Saves a ZGV for a prestudent, includes Ort, Datum, Nation for bachelor and master
* @param $prestudent_id
*/
public function saveZgvPruefung()
{
@@ -375,7 +377,7 @@ class InfoCenter extends Auth_Controller
$zgvmadatum = isEmptyString($zgvmadatum) ? null : date_format(date_create($zgvmadatum), 'Y-m-d');
$zgvmanation_code = $this->input->post('zgvmanation') === 'null' ? null : $this->input->post('zgvmanation');
$lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id, '', 'Interessent');
$lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id, '', self::INTERESSENTSTATUS);
$semresult = null;
@@ -426,7 +428,6 @@ class InfoCenter extends Auth_Controller
/**
* Saves Absage for Prestudent including the reason for the Absage (statusgrund).
* inserts Studiensemester and Ausbildungssemester for the new Absage of (chronologically) last status.
* @param $prestudent_id
*/
public function saveAbsage()
{
@@ -442,7 +443,7 @@ class InfoCenter extends Auth_Controller
if (hasData($lastStatus) && hasData($statusgrresult))
{
//check if still Interessent and not freigegeben yet
if ($lastStatus->retval[0]->status_kurzbz === 'Interessent' && !isset($lastStatus->retval[0]->bestaetigtam))
if ($lastStatus->retval[0]->status_kurzbz === self::INTERESSENTSTATUS && !isset($lastStatus->retval[0]->bestaetigtam))
{
$result = $this->PrestudentstatusModel->insert(
array(
@@ -452,7 +453,7 @@ class InfoCenter extends Auth_Controller
'datum' => date('Y-m-d'),
'orgform_kurzbz' => $lastStatus->retval[0]->orgform_kurzbz,
'studienplan_id' => $lastStatus->retval[0]->studienplan_id,
'status_kurzbz' => 'Abgewiesener',
'status_kurzbz' => self::ABGEWIESENERSTATUS,
'statusgrund_id' => $statusgrund,
'insertvon' => $this->_uid,
'insertamum' => date('Y-m-d H:i:s')
@@ -478,7 +479,6 @@ class InfoCenter extends Auth_Controller
/**
* Saves Freigabe of a Prestudent to the Studiengang.
* updates bestaetigtam and bestaetigtvon fields of the last status
* @param $prestudent_id
*/
public function saveFreigabe()
{
@@ -497,7 +497,7 @@ class InfoCenter extends Auth_Controller
$lastStatus = $lastStatus->retval[0];
//check if still Interessent and not freigegeben yet
if ($lastStatus->status_kurzbz === 'Interessent' && !isset($lastStatus->bestaetigtam))
if ($lastStatus->status_kurzbz === self::INTERESSENTSTATUS && !isset($lastStatus->bestaetigtam))
{
$statusdata = array(
'bestaetigtvon' => $this->_uid,
@@ -599,7 +599,6 @@ class InfoCenter extends Auth_Controller
/**
* Updates a new Notiz for a person
* @param int $notiz_id
* @param int $person_id
*/
public function updateNotiz($notiz_id)
{
@@ -1226,13 +1225,22 @@ class InfoCenter extends Auth_Controller
if (isset($zgvpruefung->prestudentstatus))
{
//get orgform for german and english
if (isset($zgvpruefung->prestudentstatus->bezeichnung_orgform) && is_array($zgvpruefung->prestudentstatus->bezeichnung_orgform))
{
$zgvpruefung->prestudentstatus->bezeichnung_orgform_german = getPhraseByLanguage($zgvpruefung->prestudentstatus->bezeichnung_orgform, 'German');
$zgvpruefung->prestudentstatus->bezeichnung_orgform_english = getPhraseByLanguage($zgvpruefung->prestudentstatus->bezeichnung_orgform, 'English');
}
$position = strpos($zgvpruefung->prestudentstatus->anmerkung, 'Alt:');
//parse Anmerkung for Alternative (Prio is given in orgform and sprache anyway)
$zgvpruefung->prestudentstatus->alternative = is_numeric($position) ? substr($zgvpruefung->prestudentstatus->anmerkung, $position) : null;
}
//if prestudent is not interessent or is already bestaetigt, then show only as information, non-editable
$zgvpruefung->infoonly = !isset($zgvpruefung->prestudentstatus) || isset($zgvpruefung->prestudentstatus->bestaetigtam) || $zgvpruefung->prestudentstatus->status_kurzbz != 'Interessent';
$zgvpruefung->infoonly = !isset($zgvpruefung->prestudentstatus)
|| isset($zgvpruefung->prestudentstatus->bestaetigtam)
|| $zgvpruefung->prestudentstatus->status_kurzbz != self::INTERESSENTSTATUS;
//wether prestudent was freigegeben for RT/Stg
$zgvpruefung->isRtFreigegeben = false;
@@ -1241,7 +1249,7 @@ class InfoCenter extends Auth_Controller
$this->PrestudentstatusModel->addSelect('bestaetigtam, statusgrund_id, tbl_status_grund.bezeichnung_mehrsprachig AS bezeichnung_statusgrund');
$this->PrestudentstatusModel->addJoin('public.tbl_status_grund', 'statusgrund_id', 'LEFT');
$isFreigegeben = $this->PrestudentstatusModel->loadWhere(array('studiensemester_kurzbz' => $zgvpruefung->prestudentstatus->studiensemester_kurzbz,
'tbl_prestudentstatus.status_kurzbz' => 'Interessent', 'prestudent_id' => $prestudent->prestudent_id));
'tbl_prestudentstatus.status_kurzbz' => self::INTERESSENTSTATUS, 'prestudent_id' => $prestudent->prestudent_id));
if (hasData($isFreigegeben))
@@ -1270,7 +1278,7 @@ class InfoCenter extends Auth_Controller
$zgvpruefung->changeup = false;
$zgvpruefung->changedown = false;
if (isset($zgvpruefung->prestudentstatus->status_kurzbz) && $zgvpruefung->prestudentstatus->status_kurzbz == 'Interessent')
if (isset($zgvpruefung->prestudentstatus->status_kurzbz) && $zgvpruefung->prestudentstatus->status_kurzbz == self::INTERESSENTSTATUS)
{
if (isset($zgvpruefung->prestudentstatus->studiensemester_kurzbz))
{
@@ -1285,8 +1293,8 @@ class InfoCenter extends Auth_Controller
$this->_sortPrestudents($zgvpruefungen);
$abwstatusgruende = $this->StatusgrundModel->loadWhere(array('status_kurzbz' => 'Abgewiesener'))->retval;
$intstatusgruende = $this->StatusgrundModel->loadWhere(array('status_kurzbz' => 'Interessent'))->retval;
$abwstatusgruende = $this->StatusgrundModel->loadWhere(array('status_kurzbz' => self::ABGEWIESENERSTATUS))->retval;
$intstatusgruende = $this->StatusgrundModel->loadWhere(array('status_kurzbz' => self::INTERESSENTSTATUS))->retval;
$data = array (
'zgvpruefungen' => $zgvpruefungen,
@@ -1344,9 +1352,9 @@ class InfoCenter extends Auth_Controller
return 1;
elseif ($a->prestudentstatus->status_kurzbz !== $b->prestudentstatus->status_kurzbz)
{
if ($a->prestudentstatus->status_kurzbz === 'Interessent')
if ($a->prestudentstatus->status_kurzbz === self::INTERESSENTSTATUS)
return -1;
elseif ($b->prestudentstatus->status_kurzbz === 'Interessent')
elseif ($b->prestudentstatus->status_kurzbz === self::INTERESSENTSTATUS)
return 1;
}
}
-3
View File
@@ -14,9 +14,6 @@ class Auth_Controller extends FHC_Controller
// Loads authentication library and starts authentication
$this->load->library('AuthLib');
// Loads authentication helper
$this->load->helper('hlp_authentication');
// Checks if the caller is allowed to access to this content
$this->_isAllowed($requiredPermissions);
}
@@ -2,20 +2,35 @@
if (!defined('BASEPATH')) exit('No direct script access allowed');
// ------------------------------------------------------------------------
// -----------------------------------------------------------------------------------------------------
// Functions needed to manage the user authentication
// ------------------------------------------------------------------------
// NOTE: the following functions do NOT prompt a login page if the user is NOT logged in
// -----------------------------------------------------------------------------------------------------
/**
* It calls the AuthLib, if the user is NOT logged then the login page is shown
* If the user is NOT logged then a null value is returned.
* If the user is alredy logged, then it is possible to access to the authentication object
* that contains the person_id of the logged user
* NOTE: if a user is logged then a person_id is always present!
*/
function getAuthPersonId()
{
$ci =& get_instance(); // get CI instance
return isLogged() ? ($ci->authlib->getAuthObj())->{AuthLib::AO_PERSON_ID} : null;
}
/**
* If the user is NOT logged then a null value is returned.
* If the user is alredy logged, then it is possible to access to the authentication object
* that contains the username of the logged user
*
* @return string or null
* NOTE: if the user is logged with a "foreign" method (ex. Bewerbungstool),
* then it is possible that the username is null!
*/
function getAuthUID()
{
$ci =& get_instance(); // get CI instance
return ($ci->authlib->getAuthObj())->{AuthLib::AO_USERNAME};
return isLogged() ? ($ci->authlib->getAuthObj())->{AuthLib::AO_USERNAME} : null;
}
+16
View File
@@ -224,3 +224,19 @@ function isDateWorkingDay($date, $days = null)
return true;
}
}
/**
* Checks if the current user is logged by checking that the AuthLib is loaded and
* it is present the authentication object in session
* NOTE: it is placed here instead of being placed in the helper hlp_authentication_helper
* because hlp_authentication_helper is loaded after the authentication.
* It is very useful to use this function even in those parts of the code that are accessible
* even when a user is NOT authenticated!!!
* If and only if this function returns true, then all the functions present in hlp_authentication_helper can be used!
*/
function isLogged()
{
$ci =& get_instance(); // get CI instance
return isset($ci->authlib) && $ci->authlib->getAuthObj() != null;
}
+8 -2
View File
@@ -30,7 +30,6 @@ class AuthLib
/**
* Construct
*
*
* @param bool $authenticate If the authentication must be performed.
*/
public function __construct($authenticate = true)
@@ -483,6 +482,8 @@ class AuthLib
/**
* Stores the authentication object into the authentication session
* Everything was fine, the user at this point is authenticated, it is possible to store the authentication object
* in the user session
*/
private function _storeSessionAuthObj($authObj)
{
@@ -552,7 +553,12 @@ class AuthLib
$this->_showError(getData($auth)); // display a generic error message and logs the occurred error
}
}
// else the user is already logged, then continue with the execution
// else the user is already logged, then loads authentication helper and continue with the execution
// NOTE: it is needed only here because:
// - it is called when a user is already logged in
// - it is called after login the user
// - it is NOT called in case of fatal error or wrong authentication
$this->_ci->load->helper('hlp_authentication');
}
/**
+65 -82
View File
@@ -108,9 +108,6 @@ class FiltersLib
{
$this->_ci =& get_instance(); // get code igniter instance
// Loads authentication helper
$this->_ci->load->helper('hlp_authentication'); // NOTE: needed to load custom filters do not remove!
$this->_filterUniqueId = $this->_getFilterUniqueId($params); // sets the id for the related filter widget
}
@@ -185,11 +182,8 @@ class FiltersLib
{
// Loads the needed models
$this->_ci->load->model('system/Filters_model', 'FiltersModel');
$this->_ci->load->model('person/Benutzer_model', 'BenutzerModel'); // to get the default custom filter
$this->_ci->FiltersModel->resetQuery(); // reset any previous built query
$this->_ci->FiltersModel->addJoin('public.tbl_benutzer', 'person_id', 'LEFT'); // left join with benutzer table
$this->_ci->FiltersModel->addSelect('system.tbl_filters.*'); // select only from table filters
$this->_ci->FiltersModel->addOrder('sort', 'ASC'); // sort on column sort
$this->_ci->FiltersModel->addLimit(1); // if more than one filter is set as default only one will be retrieved
@@ -223,7 +217,7 @@ class FiltersLib
$whereParameters = array(
'app' => $app,
'dataset_name' => $datasetName,
'uid' => getAuthUID(),
'person_id' => getAuthPersonId(),
'default_filter' => true
);
@@ -260,10 +254,10 @@ class FiltersLib
$jsonEncodedFilter = null;
// If the definition contains data and they are valid
if (hasData($definition) && isset($definition->retval[0]->filter) && trim($definition->retval[0]->filter) != '')
if (hasData($definition) && isset(getData($definition)[0]->filter) && trim(getData($definition)[0]->filter) != '')
{
// Get the json definition of the filter
$tmpJsonEncodedFilter = json_decode($definition->retval[0]->filter);
$tmpJsonEncodedFilter = json_decode(getData($definition)[0]->filter);
// Checks required filter's properies
if (isset($tmpJsonEncodedFilter->name)
@@ -585,87 +579,76 @@ class FiltersLib
$saveCustomFilter = false; // by default returns a failure
// Checks parameter customFilterDescription if not valid stop the execution
if (isEmptyString($customFilterDescription))
{
return $saveCustomFilter;
}
if (isEmptyString($customFilterDescription)) return $saveCustomFilter;
$this->_ci->load->model('system/Filters_model', 'FiltersModel'); // to load the filter definitions
$this->_ci->load->model('person/Benutzer_model', 'BenutzerModel'); // to get the person_id of the authenticated user
$this->_ci->FiltersModel->resetQuery(); // reset any previous built query
$this->_ci->BenutzerModel->resetQuery(); // reset any previous built query
// Loads data for the authenticated user
$authBenutzer = $this->_ci->BenutzerModel->loadWhere(array('uid' => getAuthUID()));
if (hasData($authBenutzer)) // if data are found
// person_id of the authenticated user
$authPersonId = getAuthPersonId();
// Postgres array for the description
$descPGArray = str_replace('%desc%', $customFilterDescription, '{"%desc%", "%desc%", "%desc%", "%desc%"}');
// Loads the definition to check if is already present in the DB
$definition = $this->_ci->FiltersModel->loadWhere(array(
'app' => $this->getSessionElement(self::APP_PARAMETER),
'dataset_name' => $this->getSessionElement(self::DATASET_NAME_PARAMETER),
'description' => $descPGArray,
'person_id' => $authPersonId
));
// New definition to be json encoded
$jsonDeifinition = new stdClass();
$jsonDeifinition->name = $customFilterDescription; // name of the filter
// Generates the "column" property
$jsonDeifinition->columns = array();
$selectedFields = $this->getSessionElement(self::SESSION_SELECTED_FIELDS); // retrieved the selected fields
for ($i = 0; $i < count($selectedFields); $i++)
{
// person_id of the authenticated user
$authPersonId = $authBenutzer->retval[0]->person_id;
// Postgres array for the description
$descPGArray = str_replace('%desc%', $customFilterDescription, '{"%desc%", "%desc%", "%desc%", "%desc%"}');
// Each element is an object with a property called "name"
$jsonDeifinition->columns[$i] = new stdClass();
$jsonDeifinition->columns[$i]->name = $selectedFields[$i];
}
// Loads the definition to check if is already present in the DB
$definition = $this->_ci->FiltersModel->loadWhere(array(
'app' => $this->getSessionElement(self::APP_PARAMETER),
'dataset_name' => $this->getSessionElement(self::DATASET_NAME_PARAMETER),
'description' => $descPGArray,
'person_id' => $authPersonId
));
// List of applied filters
$jsonDeifinition->filters = $this->getSessionElement(self::SESSION_FILTERS);
// New definition to be json encoded
$jsonDeifinition = new stdClass();
$jsonDeifinition->name = $customFilterDescription; // name of the filter
// If it is already present
if (hasData($definition))
{
// update it
$this->_ci->FiltersModel->update(
array(
'app' => $this->getSessionElement(self::APP_PARAMETER),
'dataset_name' => $this->getSessionElement(self::DATASET_NAME_PARAMETER),
'description' => $descPGArray,
'person_id' => $authPersonId
),
array(
'filter' => json_encode($jsonDeifinition)
)
);
// Generates the "column" property
$jsonDeifinition->columns = array();
$selectedFields = $this->getSessionElement(self::SESSION_SELECTED_FIELDS); // retrieved the selected fields
for ($i = 0; $i < count($selectedFields); $i++)
{
// Each element is an object with a property called "name"
$jsonDeifinition->columns[$i] = new stdClass();
$jsonDeifinition->columns[$i]->name = $selectedFields[$i];
}
$saveCustomFilter = true;
}
else // otherwise insert a new one
{
$this->_ci->FiltersModel->insert(
array(
'app' => $this->getSessionElement(self::APP_PARAMETER),
'dataset_name' => $this->getSessionElement(self::DATASET_NAME_PARAMETER),
'filter_kurzbz' => uniqid($authPersonId, true),
'description' => $descPGArray,
'person_id' => $authPersonId,
'sort' => null,
'default_filter' => false,
'filter' => json_encode($jsonDeifinition),
'oe_kurzbz' => null
)
);
// List of applied filters
$jsonDeifinition->filters = $this->getSessionElement(self::SESSION_FILTERS);
// If it is already present
if (hasData($definition))
{
// update it
$this->_ci->FiltersModel->update(
array(
'app' => $this->getSessionElement(self::APP_PARAMETER),
'dataset_name' => $this->getSessionElement(self::DATASET_NAME_PARAMETER),
'description' => $descPGArray,
'person_id' => $authPersonId
),
array(
'filter' => json_encode($jsonDeifinition)
)
);
$saveCustomFilter = true;
}
else // otherwise insert a new one
{
$this->_ci->FiltersModel->insert(
array(
'app' => $this->getSessionElement(self::APP_PARAMETER),
'dataset_name' => $this->getSessionElement(self::DATASET_NAME_PARAMETER),
'filter_kurzbz' => uniqid($authPersonId, true),
'description' => $descPGArray,
'person_id' => $authPersonId,
'sort' => null,
'default_filter' => false,
'filter' => json_encode($jsonDeifinition),
'oe_kurzbz' => null
)
);
$saveCustomFilter = true;
}
$saveCustomFilter = true;
}
return $saveCustomFilter;
@@ -721,7 +704,7 @@ class FiltersLib
$childrenPersonalArray = array(); // contains all the children elements in menu enty for personal filters
// Loops through loaded filters
foreach ($filters->retval as $filter)
foreach (getData($filters) as $filter)
{
// Generate a menu entry
$menuEntry = $this->_ci->navigationlib->oneLevel(
+6 -2
View File
@@ -37,7 +37,9 @@ class StudienplanLib
'pflicht' => $row->pflicht,
'zeugnis' => $row->zeugnis,
'bezeichnung' => $row->bezeichnung,
'ects' => $row->ects
'kurzbz' => $row->kurzbz,
'ects' => $row->ects,
'semester' => $row->semester
);
$childs = $this->getChildElements($row->studienplan_lehrveranstaltung_id);
if(is_array($childs) && count($childs) > 0)
@@ -65,7 +67,9 @@ class StudienplanLib
'pflicht' => $row->pflicht,
'zeugnis' => $row->zeugnis,
'bezeichnung' => $row->bezeichnung,
'ects' => $row->ects
'kurzbz' => $row->kurzbz,
'ects' => $row->ects,
'semester' => $row->semester
);
$childs = $this->getChildElements($row->studienplan_lehrveranstaltung_id);
if(is_array($childs))
+1 -1
View File
@@ -218,7 +218,7 @@ class Prestudent_model extends DB_Model
if (count($lastStatus->retval) > 0)
{
// get Studiengangname from Studienlan and -ordnung
//get Studiengangname from Studienplan and -ordnung
$studienordnung = $this->PrestudentstatusModel->getStudienordnungFromPrestudent($prestudent_id);
if ($studienordnung->error)
return error($studienordnung->retval);
@@ -19,14 +19,17 @@ class Prestudentstatus_model extends DB_Model
public function getLastStatus($prestudent_id, $studiensemester_kurzbz = '', $status_kurzbz = '')
{
$query = 'SELECT tbl_prestudentstatus.*,
bezeichnung AS studienplan_bezeichnung,
tbl_studienplan.orgform_kurzbz as orgform,
tbl_studienplan.bezeichnung AS studienplan_bezeichnung,
tbl_studienplan.orgform_kurzbz AS orgform,
sprache,
tbl_orgform.bezeichnung_mehrsprachig AS bezeichnung_orgform,
tbl_status.bezeichnung_mehrsprachig,
tbl_status_grund.bezeichnung_mehrsprachig as bezeichnung_statusgrund
FROM public.tbl_prestudentstatus LEFT JOIN lehre.tbl_studienplan USING (studienplan_id)
tbl_status_grund.bezeichnung_mehrsprachig AS bezeichnung_statusgrund
FROM public.tbl_prestudentstatus
LEFT JOIN lehre.tbl_studienplan USING (studienplan_id)
JOIN public.tbl_status USING (status_kurzbz)
LEFT JOIN public.tbl_status_grund USING (statusgrund_id)
LEFT JOIN bis.tbl_orgform ON tbl_studienplan.orgform_kurzbz = bis.tbl_orgform.orgform_kurzbz
WHERE tbl_status.status_kurzbz = tbl_prestudentstatus.status_kurzbz
AND prestudent_id = ?';
@@ -349,6 +349,7 @@ class Reihungstest_model extends DB_Model
ps.prestudent_id,
rt.datum,
rt.uhrzeit,
rt.reihungstest_id,
tbl_studienplan.orgform_kurzbz,
tbl_prestudentstatus.studienplan_id,
tbl_prestudentstatus.ausbildungssemester,
@@ -28,6 +28,7 @@ class Lehreinheit_model extends DB_Model
{
$lehreinheiten = array();
$this->addOrder('lehreinheit_id');
$les = $this->loadWhere(
array('lehrveranstaltung_id' => $lehrveranstaltung_id,
'studiensemester_kurzbz' => $studiensemester)
@@ -62,17 +63,17 @@ class Lehreinheit_model extends DB_Model
if (hasData($studiengangresponse))
{
$studiengang = $studiengangresponse->retval[0];
$stgkuerzel = mb_strtoupper($studiengang->typ . $studiengang->kurzbz);
$stgkuerzel = mb_strtoupper($studiengang->typ.$studiengang->kurzbz);
$letoadd->lehreinheitgruppen[] = array(
'semester' => $lehreinheitgruppe->semester,
'verband' => $lehreinheitgruppe->verband,
'gruppe' => $lehreinheitgruppe->gruppe,
'gruppe_kurzbz' => $lehreinheitgruppe->gruppe_kurzbz,
'direktinskription' => $lehreinheitgruppe->direktinskription,
'studiengang_kz' => $lehreinheitgruppe->studiengang_kz,
'studiengang_kuerzel' => $stgkuerzel
);
$letoadd->lehreinheitgruppen[] = array(
'semester' => $lehreinheitgruppe->semester,
'verband' => $lehreinheitgruppe->verband,
'gruppe' => $lehreinheitgruppe->gruppe,
'gruppe_kurzbz' => $lehreinheitgruppe->gruppe_kurzbz,
'direktinskription' => $lehreinheitgruppe->direktinskription,
'studiengang_kz' => $lehreinheitgruppe->studiengang_kz,
'studiengang_kuerzel' => $stgkuerzel
);
}
}
}
@@ -140,6 +140,10 @@
{
$datasetRaw->{'anmeldefrist'} = '-';
}
else
{
$datasetRaw->{'anmeldefrist'} = date_format(date_create($datasetRaw->{'anmeldefrist'}), 'd.m.Y');
}
if ($datasetRaw->{'max_plaetze'} == null)
{
$datasetRaw->{'max_plaetze'} = '-';
+17 -3
View File
@@ -3,16 +3,27 @@ if(isset($course['note']) && isset($grades[$course['note']]))
$gradeclass = ($grades[$course['note']]['positiv']?'gradelist_row_grade_positiv':'gradelist_row_grade_negativ');
else
$gradeclass = '';
// Only Display the Course if the person is assigned to the course
// (no additional elective courses are displayed)
if(isset($course['zugeordnet']) && $course['zugeordnet'] === true)
{
?>
<tr class="gradelist_row_<?php echo $course['lehrtyp_kurzbz']; ?> gradelist_row_depth_<?php echo $depth; ?>">
<td><?php echo $course['bezeichnung']; ?></td>
<td><?php echo $course['kurzbz']; ?></td>
<td align="center">
<?php
echo $course['semester'].'. Sem ';
if(isset($course['studiengang_kurzbz']))
echo '( '.$course['studiengang_kurzbz'].' )';
?></td>
<td><?php echo (isset($course['lehrform_kurzbz'])?$course['lehrform_kurzbz']:''); ?></td>
<td align="right"><?php echo (isset($course['ects'])?$course['ects']:''); ?></td>
<!--
<td align="right"><?php echo (isset($course['sws'])?$course['sws']:''); ?></td>
<td align="right"><?php echo (isset($course['lehrform_kurzbz'])?$course['lehrform_kurzbz']:''); ?></td>
<td align="right"><?php echo (isset($course['pflicht'])?($course['pflicht']?'Ja':'Nein'):''); ?></td>
<td align="right"><?php echo (isset($course['zeugnis'])?($course['zeugnis']?'Ja':'Nein'):''); ?></td>
-->
<td class="<?php echo $gradeclass; ?>">
<?php
if (isset($course['note']) && isset($grades[$course['note']]['anmerkung']))
@@ -20,3 +31,6 @@ else
?>
</td>
</tr>
<?php
}
?>
@@ -31,11 +31,14 @@
</div>
</div>
<div>
<b><?php echo $this->p->t('lehre', 'notendurchschnitt'); ?>:</b>
<b><?php echo $this->p->t('lehre', 'notendurchschnitt'); ?>
<img src="../../../../skin/images/information.png" title="<?php echo htmlentities($this->p->t('lehre', 'info_notendurchschnitt')); ?>" />:</b>
<?php echo $courses['overall']['notendurchschnitt'] ?><br>
<b><?php echo $this->p->t('lehre', 'gewichteternotendurchschnitt'); ?>:</b>
<b><?php echo $this->p->t('lehre', 'gewichteternotendurchschnitt'); ?>
<img src="../../../../skin/images/information.png" title="<?php echo htmlentities($this->p->t('lehre', 'info_notendurchschnitt_gewichtet')); ?>" />:</b>
<?php echo $courses['overall']['notendurchschnittgewichtet'] ?><br>
<b><?php echo $this->p->t('lehre', 'ects'); ?>:</b>
<b><?php echo $this->p->t('lehre', 'ects'); ?>
<img src="../../../../skin/images/information.png" title="Summe der positiv absolvierten ECTS" />:</b>
<?php echo $courses['overall']['ectssumme_positiv'] ?><br>
<br>
<?php
+37 -12
View File
@@ -38,13 +38,13 @@
<thead>
<tr>
<th><?php echo $this->p->t('lehre','lehrveranstaltung');?></th>
<th><?php echo $this->p->t('lehre','kurzbz');?></th>
<th><?php echo $this->p->t('lehre','semester');?></th>
<th><?php echo $this->p->t('lehre','lehrform');?></th>
<th style="text-align: right"><?php echo $this->p->t('lehre','ects');?></th>
<!--
<th>SWS</th>
<th>Lehrform</th>
<th>Pflichtfach</th>
<th>Zeugnis</th>
-->
<th style="text-align: right"><?php echo $this->p->t('lehre','sws');?></th>
<th><?php echo $this->p->t('lehre','pflichtfach');?></th>
<th><?php echo $this->p->t('lehre','zeugnis');?></th>
<th><?php echo $this->p->t('lehre','note');?></th>
</tr>
</thead>
@@ -58,6 +58,9 @@
</tbody>
<tfoot>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
<th style="text-align: right">
<?php
@@ -71,6 +74,20 @@
}
?>
</th>
<th style="text-align: right">
<?php
echo (isset($semesterdata['swssumme_positiv'])?$semesterdata['swssumme_positiv']:'');
if (isset($semesterdata['swssumme'])
&& isset($semesterdata['swssumme_positiv'])
&& $semesterdata['swssumme'] != $semesterdata['swssumme_positiv'])
{
echo ' ('.$semesterdata['swssumme'].')';
}
?>
</th>
<th></th>
<th></th>
<th></th>
</tr>
</tfoot>
@@ -84,13 +101,13 @@
<thead>
<tr>
<th><?php echo $this->p->t('lehre','lehrveranstaltung');?></th>
<th><?php echo $this->p->t('lehre','kurzbz');?></th>
<th><?php echo $this->p->t('lehre','semester');?></th>
<th><?php echo $this->p->t('lehre','lehrform');?></th>
<th><?php echo $this->p->t('lehre','ects');?></th>
<!--
<th>SWS</th>
<th>Lehrform</th>
<th>Pflichtfach</th>
<th>Zeugnis</th>
-->
<th><?php echo $this->p->t('lehre','sws');?></th>
<th><?php echo $this->p->t('lehre','pflichtfach');?></th>
<th><?php echo $this->p->t('lehre','zeugnis');?></th>
<th><?php echo $this->p->t('lehre','note');?></th>
</tr>
</thead>
@@ -107,8 +124,14 @@
</tbody>
<tfoot>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
<th style="text-align: right"><?php echo (isset($semesterdata['ectssumme_nonstpl'])?number_format($semesterdata['ectssumme_nonstpl'],2):''); ?></th>
<th style="text-align: right"><?php echo (isset($semesterdata['swssumme_nonstpl'])?number_format($semesterdata['swssumme_nonstpl'],2):''); ?></th>
<th></th>
<th></th>
<th></th>
</tr>
</tfoot>
@@ -120,8 +143,10 @@
<div class="panel-footer">
<b><?php echo $this->p->t('lehre','notendurchschnitt');?>:</b>
<?php echo (isset($semesterdata['notendurchschnitt'])?$semesterdata['notendurchschnitt']:'');?>
<img src="../../../../skin/images/information.png" title="<?php echo htmlentities($this->p->t('lehre', 'info_notendurchschnitt')); ?>" />
<b><?php echo $this->p->t('lehre','gewichteternotendurchschnitt');?>:</b>
<?php echo (isset($semesterdata['notendurchschnittgewichtet'])?$semesterdata['notendurchschnittgewichtet']:'');?>
<img src="../../../../skin/images/information.png" title="<?php echo htmlentities($this->p->t('lehre', 'info_notendurchschnitt_gewichtet')); ?>" />
</div>
</div>
</div>
@@ -10,6 +10,7 @@
$LOGTYPE_KURZBZ = '\'Processstate\'';
$STATUS_KURZBZ = '\'Wartender\', \'Bewerber\', \'Aufgenommener\', \'Student\'';
$ADDITIONAL_STG = '10021,10027';
$AKTE_TYP = '\'identity\', \'zgv_bakk\'';
$query = '
WITH currentOrNextStudiensemester AS (
@@ -48,6 +49,14 @@
ORDER BY l.zeitpunkt DESC
LIMIT 1
) AS "LastActionType",
(
SELECT count(akte_id)
FROM public.tbl_akte a
WHERE
a.person_id = p.person_id
AND
a.dokument_kurzbz in ('.$AKTE_TYP.')
) AS "AnzahlAkte",
(
SELECT l.insertvon
FROM system.tbl_log l
@@ -134,7 +143,7 @@
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
AND pss.bewerbung_abgeschicktamum IS NOT NULL
AND pss.bestaetigtam IS NULL
-- AND pss.bestaetigtam IS NULL
AND ps.person_id = p.person_id
AND (sg.typ IN ('.$STUDIENGANG_TYP.')
OR
@@ -272,6 +281,7 @@
ucfirst($this->p->t('global', 'parkdatum')),
ucfirst($this->p->t('global', 'letzteAktion')),
'Aktionstyp',
'AnzahlAktePflicht',
ucfirst($this->p->t('global', 'letzterBearbeiter')),
ucfirst($this->p->t('lehre', 'studiensemester')),
ucfirst($this->p->t('global', 'gesendetAm')),
@@ -6,7 +6,8 @@
$TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\'';
$LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'New application\'';
$REJECTED_STATUS = '\'Abgewiesener\'';
$ADDITIONAL_STG = '10021,10027';
$ADDITIONAL_STG = '10021,10027,10002';
$STATUS_KURZBZ = '\'Wartender\', \'Bewerber\', \'Aufgenommener\', \'Student\'';
$query = '
SELECT
@@ -114,6 +115,29 @@
AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >= NOW())
LIMIT 1
) AS "StgAbgeschickt",
(
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.typ || sg.kurzbz) || \':\' || sp.orgform_kurzbz), \', \')
FROM public.tbl_prestudentstatus pss
JOIN public.tbl_prestudent ps USING(prestudent_id)
JOIN public.tbl_studiengang sg USING(studiengang_kz)
JOIN lehre.tbl_studienplan sp USING(studienplan_id)
WHERE pss.status_kurzbz IN ('.$STATUS_KURZBZ.')
AND ps.person_id = p.person_id
AND (sg.typ IN ('.$STUDIENGANG_TYP.')
OR
sg.studiengang_kz in('.$ADDITIONAL_STG.')
)
AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >= NOW())
AND NOT EXISTS (
SELECT 1
FROM tbl_prestudentstatus spss
WHERE spss.prestudent_id = pss.prestudent_id
AND spss.status_kurzbz = '.$REJECTED_STATUS.'
AND spss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende > NOW())
)
LIMIT 1
) AS "StgAktiv",
(
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT UPPER(sg.bezeichnung_mehrsprachig[1])), \', \')
FROM public.tbl_prestudentstatus pss
@@ -155,7 +179,7 @@
) rtp ON(rtp.person_id = ps.person_id AND rtp.studiensemester_kurzbz = pss.studiensemester_kurzbz)
WHERE pss.status_kurzbz = '.$INTERESSENT_STATUS.'
AND ps.person_id = p.person_id
AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.ende >= NOW())
AND pss.studiensemester_kurzbz IN (SELECT ss.studiensemester_kurzbz FROM public.tbl_studiensemester ss WHERE ss.studiensemester_kurzbz = \'WS2019\')
ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC
LIMIT 1
) AS "ReihungstestApplied",
@@ -227,6 +251,7 @@
'GesendetAm',
'NumAbgeschickt',
'Studiengänge',
'Stg aktiv',
'Statusgrund',
'Reihungstest angetreten',
'Reihungstest angemeldet',
@@ -287,6 +312,11 @@
$datasetRaw->{'Nation'} = '-';
}
if ($datasetRaw->{'StgAktiv'} == null)
{
$datasetRaw->{'StgAktiv'} = '-';
}
if ($datasetRaw->{'ReihungstestAngetreten'} == 'true')
{
$datasetRaw->{'ReihungstestAngetreten'} = 'Ja';
-10
View File
@@ -1,10 +0,0 @@
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
@@ -1,33 +0,0 @@
<?php
$language_alias = array(
'afrikaans' => 'af',
'arabic' => 'ar',
'bengali' => 'bn', // Timepicker is not avaliable yet
'bulgarian' => 'bg',
'chinese' => 'zh-cn',
'czech' => 'cs',
'danish' => 'da', // Timepicker is not avaliable yet
'dutch' => 'nl',
'french' => 'fr',
'german' => 'de',
'greek' => 'el',
'hungarian' => 'hu',
'indonesian' => 'id',
'italian' => 'it',
'japanese' => 'ja',
'korean' => 'ko',
'norwegian' => 'no',
'persian' => 'fa', // Timepicker is not avaliable yet
'polish' => 'pl',
'pt-br.portuguese' => 'pt-br',
'pt-pt.portuguese' => 'pt',
'romanian' => 'ro',
'russian' => 'ru',
'slovak' => 'sk',
'spanish' => 'es',
'thai' => 'th', // Timepicker is not avaliable yet
'turkish' => 'tr',
'ukrainian' => 'uk',
'vietnamese' => 'vi'
);
@@ -1,169 +0,0 @@
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/*
| -------------------------------------------------------------------
| Transliteration characters
| -------------------------------------------------------------------
| This file based on ./application/config/foreign_chars.php file
| of Codeigniter's Framework and contains an array of foreign
| characters for transliteration conversion used by grocery CRUD library
|
*/
$translit_characters = array(
// Aa
'/Α|Ά|А|À|Á|Â|Ã|Ä|Å|Ǻ|Ā|Ă|Ą|Ǎ/' => 'A',
'/α|ά|а|à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª/' => 'a',
// Bb
'/Β|Б/' => 'B',
'/β|б/' => 'b',
// Cc
'/Ç|Ć|Ĉ|Ċ|Č/' => 'C',
'/ç|ć|ĉ|ċ|č/' => 'c',
// Dd
'/Δ|Д|Ð|Ď|Đ/' => 'D',
'/δ|д|ð|ď|đ/' => 'd',
// Ee
'/Ε|Έ|Е|Э|Є|È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě/' => 'E',
'/ε|έ|е|э|є|è|é|ê|ë|ē|ĕ|ė|ę|ě/' => 'e',
// Ff
'/Φ|Ф/' => 'F',
'/φ|ф|ƒ/' => 'f',
// Gg
'/Γ|Г|Ĝ|Ğ|Ġ|Ģ/' => 'G',
'/γ|г|ĝ|ğ|ġ|ģ/' => 'g',
// Hh
'/Х|Ĥ|Ħ/' => 'H',
'/х|ĥ|ħ/' => 'h',
// Ii
'/Η|Ή|Ι|Ί|И|Ы|І|Ї|Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ/' => 'I',
'/η|ή|ι|ί|и|ы|і|ї|ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı/' => 'i',
// Jj
'/Ĵ/' => 'J',
'/ĵ/' => 'j',
// Kk
'/Κ|К|Ķ/' => 'K',
'/κ|к|ķ/' => 'k',
// Ll
'/Λ|Л|Ĺ|Ļ|Ľ|Ŀ|Ł/' => 'L',
'/λ|л|ĺ|ļ|ľ|ŀ|ł/' => 'l',
// Mm
'/Μ|М/' => 'M',
'/μ|м/' => 'm',
// Nn
'/Ν|Н|Ñ|Ń|Ņ|Ň/' => 'N',
'/ν|н|ñ|ń|ņ|ň|ʼn/' => 'n',
// Oo
'/Ο|Ό|О|Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ/' => 'O',
'/ο|ό|о|ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º/' => 'o',
// Pp
'/Π|П/' => 'P',
'/π|п/' => 'p',
// Qq
// '//' => 'Q',
// '//' => 'q',
// Rr
'/Ρ|Р|Ŕ|Ŗ|Ř/' => 'R',
'/ρ|р|ŕ|ŗ|ř/' => 'r',
// Ss
'/Σ|С|Ś|Ŝ|Ş|Š/' => 'S',
'/σ|ς|с|ś|ŝ|ş|š|ſ/' => 's',
// Tt
'/Τ|Т|Ţ|Ť|Ŧ/' => 'T',
'/τ|т|ţ|ť|ŧ/' => 't',
// Uu
'/У|Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ/' => 'U',
'/у|ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ/' => 'u',
// Vv
'/В/' => 'V',
'/в/' => 'v',
// Ww
'/Ω|Ώ|Ŵ/' => 'W',
'/ω|ώ|ŵ/' => 'w',
// Xx
'/Χ/' => 'X',
'/χ/' => 'x',
// Yy
'/Υ|Ύ|Ψ|Й|Ý|Ÿ|Ŷ/' => 'Y',
'/υ|ύ|ψ|й|ý|ÿ|ŷ/' => 'y',
// Zz
'/Ζ|З|Ź|Ż|Ž/' => 'Z',
'/ζ|з|ź|ż|ž/' => 'z',
'/Θ/' => 'Th',
'/θ/' => 'th',
'/Ξ/' => 'Ks',
'/ξ/' => 'ks',
'/Ё/' => 'Yo',
'/ё/' => 'yo',
'/Ж/' => 'Zh',
'/ж/' => 'zh',
'/Ц/' => 'Ts',
'/ц/' => 'ts',
'/Ч/' => 'Ch',
'/ч/' => 'ch',
'/Ш/' => 'Sh',
'/ш/' => 'sh',
'/Щ/' => 'Sch',
'/щ/' => 'sch',
'/Ь|Ъ/' => '',
'/ь|ъ/' => '',
'/Ю/' => 'Yu',
'/ю/' => 'yu',
'/Я/' => 'Ya',
'/я/' => 'ya',
'/Æ|Ǽ/' => 'AE',
'/Ä/' => 'Ae',
'/ä|æ|ǽ/' => 'ae',
'/Œ/' => 'OE',
'/Ö/' => 'Oe',
'/ö|œ/' => 'oe',
'/Ü/' => 'Ue',
'/ü/' => 'ue',
'/IJ/' => 'IJ',
'/ij/' => 'ij',
'/ß/'=> 'ss',
);
/* End of file translit_chars.php */
/* Location: ./assets/grocery_crud/translit_chars.php */
-10
View File
@@ -1,10 +0,0 @@
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 538 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 738 B

@@ -1,450 +0,0 @@
/*!
Chosen, a Select Box Enhancer for jQuery and Prototype
by Patrick Filler for Harvest, http://getharvest.com
Version 1.4.2
Full source at https://github.com/harvesthq/chosen
Copyright (c) 2011-2015 Harvest http://getharvest.com
MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
This file is generated by `grunt build`, do not edit it by hand.
*/
/* @group Base */
.chosen-container {
position: relative;
display: inline-block;
vertical-align: middle;
font-size: 13px;
zoom: 1;
*display: inline;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
}
.chosen-container * {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.chosen-container .chosen-drop {
position: absolute;
top: 100%;
left: -9999px;
z-index: 1010;
width: 100%;
border: 1px solid #aaa;
border-top: 0;
background: #fff;
box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);
}
.chosen-container.chosen-with-drop .chosen-drop {
left: 0;
}
.chosen-container a {
cursor: pointer;
}
.chosen-container .search-choice .group-name, .chosen-container .chosen-single .group-name {
margin-right: 4px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
font-weight: normal;
color: #999999;
}
.chosen-container .search-choice .group-name:after, .chosen-container .chosen-single .group-name:after {
content: ":";
padding-left: 2px;
vertical-align: top;
}
/* @end */
/* @group Single Chosen */
.chosen-container-single .chosen-single {
position: relative;
display: block;
overflow: hidden;
padding: 0 0 0 8px;
height: 25px;
border: 1px solid #aaa;
border-radius: 5px;
background-color: #fff;
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #ffffff), color-stop(50%, #f6f6f6), color-stop(52%, #eeeeee), color-stop(100%, #f4f4f4));
background: -webkit-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
background: -moz-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
background: -o-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
background: linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
background-clip: padding-box;
box-shadow: 0 0 3px white inset, 0 1px 1px rgba(0, 0, 0, 0.1);
color: #444;
text-decoration: none;
white-space: nowrap;
line-height: 24px;
}
.chosen-container-single .chosen-default {
color: #999;
}
.chosen-container-single .chosen-single span {
display: block;
overflow: hidden;
margin-right: 26px;
text-overflow: ellipsis;
white-space: nowrap;
}
.chosen-container-single .chosen-single-with-deselect span {
margin-right: 38px;
}
.chosen-container-single .chosen-single abbr {
position: absolute;
top: 6px;
right: 26px;
display: block;
width: 12px;
height: 12px;
background: url('chosen-sprite.png') -42px 1px no-repeat;
font-size: 1px;
}
.chosen-container-single .chosen-single abbr:hover {
background-position: -42px -10px;
}
.chosen-container-single.chosen-disabled .chosen-single abbr:hover {
background-position: -42px -10px;
}
.chosen-container-single .chosen-single div {
position: absolute;
top: 0;
right: 0;
display: block;
width: 18px;
height: 100%;
}
.chosen-container-single .chosen-single div b {
display: block;
width: 100%;
height: 100%;
background: url('chosen-sprite.png') no-repeat 0px 2px;
}
.chosen-container-single .chosen-search {
position: relative;
z-index: 1010;
margin: 0;
padding: 3px 4px;
white-space: nowrap;
}
.chosen-container-single .chosen-search input[type="text"] {
margin: 1px 0;
padding: 4px 20px 4px 5px;
width: 100%;
height: auto;
outline: 0;
border: 1px solid #aaa;
background: white url('chosen-sprite.png') no-repeat 100% -20px;
background: url('chosen-sprite.png') no-repeat 100% -20px;
font-size: 1em;
font-family: sans-serif;
line-height: normal;
border-radius: 0;
}
.chosen-container-single .chosen-drop {
margin-top: -1px;
border-radius: 0 0 4px 4px;
background-clip: padding-box;
}
.chosen-container-single.chosen-container-single-nosearch .chosen-search {
position: absolute;
left: -9999px;
}
/* @end */
/* @group Results */
.chosen-container .chosen-results {
color: #444;
position: relative;
overflow-x: hidden;
overflow-y: auto;
margin: 0 4px 4px 0;
padding: 0 0 0 4px;
max-height: 240px;
-webkit-overflow-scrolling: touch;
}
.chosen-container .chosen-results li {
display: none;
margin: 0;
padding: 5px 6px;
list-style: none;
line-height: 15px;
word-wrap: break-word;
-webkit-touch-callout: none;
}
.chosen-container .chosen-results li.active-result {
display: list-item;
cursor: pointer;
}
.chosen-container .chosen-results li.disabled-result {
display: list-item;
color: #ccc;
cursor: default;
}
.chosen-container .chosen-results li.highlighted {
background-color: #3875d7;
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #3875d7), color-stop(90%, #2a62bc));
background-image: -webkit-linear-gradient(#3875d7 20%, #2a62bc 90%);
background-image: -moz-linear-gradient(#3875d7 20%, #2a62bc 90%);
background-image: -o-linear-gradient(#3875d7 20%, #2a62bc 90%);
background-image: linear-gradient(#3875d7 20%, #2a62bc 90%);
color: #fff;
}
.chosen-container .chosen-results li.no-results {
color: #777;
display: list-item;
background: #f4f4f4;
}
.chosen-container .chosen-results li.group-result {
display: list-item;
font-weight: bold;
cursor: default;
}
.chosen-container .chosen-results li.group-option {
padding-left: 15px;
}
.chosen-container .chosen-results li em {
font-style: normal;
text-decoration: underline;
}
/* @end */
/* @group Multi Chosen */
.chosen-container-multi .chosen-choices {
position: relative;
overflow: hidden;
margin: 0;
padding: 0 5px;
width: 100%;
height: auto !important;
height: 1%;
border: 1px solid #aaa;
background-color: #fff;
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
background-image: -webkit-linear-gradient(#eeeeee 1%, #ffffff 15%);
background-image: -moz-linear-gradient(#eeeeee 1%, #ffffff 15%);
background-image: -o-linear-gradient(#eeeeee 1%, #ffffff 15%);
background-image: linear-gradient(#eeeeee 1%, #ffffff 15%);
cursor: text;
}
.chosen-container-multi .chosen-choices li {
float: left;
list-style: none;
}
.chosen-container-multi .chosen-choices li.search-field {
margin: 0;
padding: 0;
white-space: nowrap;
}
.chosen-container-multi .chosen-choices li.search-field input[type="text"] {
margin: 1px 0;
padding: 0;
height: 25px;
outline: 0;
border: 0 !important;
background: transparent !important;
box-shadow: none;
color: #999;
font-size: 100%;
font-family: sans-serif;
line-height: normal;
border-radius: 0;
}
.chosen-container-multi .chosen-choices li.search-choice {
position: relative;
margin: 3px 5px 3px 0;
padding: 3px 20px 3px 5px;
border: 1px solid #aaa;
max-width: 100%;
border-radius: 3px;
background-color: #eeeeee;
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
background-image: -webkit-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-image: -moz-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-image: -o-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-size: 100% 19px;
background-repeat: repeat-x;
background-clip: padding-box;
box-shadow: 0 0 2px white inset, 0 1px 0 rgba(0, 0, 0, 0.05);
color: #333;
line-height: 13px;
cursor: default;
}
.chosen-container-multi .chosen-choices li.search-choice span {
word-wrap: break-word;
}
.chosen-container-multi .chosen-choices li.search-choice .search-choice-close {
position: absolute;
top: 4px;
right: 3px;
display: block;
width: 12px;
height: 12px;
background: url('chosen-sprite.png') -42px 1px no-repeat;
font-size: 1px;
}
.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover {
background-position: -42px -10px;
}
.chosen-container-multi .chosen-choices li.search-choice-disabled {
padding-right: 5px;
border: 1px solid #ccc;
background-color: #e4e4e4;
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
color: #666;
}
.chosen-container-multi .chosen-choices li.search-choice-focus {
background: #d4d4d4;
}
.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close {
background-position: -42px -10px;
}
.chosen-container-multi .chosen-results {
margin: 0;
padding: 0;
}
.chosen-container-multi .chosen-drop .result-selected {
display: list-item;
color: #ccc;
cursor: default;
}
/* @end */
/* @group Active */
.chosen-container-active .chosen-single {
border: 1px solid #5897fb;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
}
.chosen-container-active.chosen-with-drop .chosen-single {
border: 1px solid #aaa;
-moz-border-radius-bottomright: 0;
border-bottom-right-radius: 0;
-moz-border-radius-bottomleft: 0;
border-bottom-left-radius: 0;
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #eeeeee), color-stop(80%, #ffffff));
background-image: -webkit-linear-gradient(#eeeeee 20%, #ffffff 80%);
background-image: -moz-linear-gradient(#eeeeee 20%, #ffffff 80%);
background-image: -o-linear-gradient(#eeeeee 20%, #ffffff 80%);
background-image: linear-gradient(#eeeeee 20%, #ffffff 80%);
box-shadow: 0 1px 0 #fff inset;
}
.chosen-container-active.chosen-with-drop .chosen-single div {
border-left: none;
background: transparent;
}
.chosen-container-active.chosen-with-drop .chosen-single div b {
background-position: -18px 2px;
}
.chosen-container-active .chosen-choices {
border: 1px solid #5897fb;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
}
.chosen-container-active .chosen-choices li.search-field input[type="text"] {
color: #222 !important;
}
/* @end */
/* @group Disabled Support */
.chosen-disabled {
opacity: 0.5 !important;
cursor: default;
}
.chosen-disabled .chosen-single {
cursor: default;
}
.chosen-disabled .chosen-choices .search-choice .search-choice-close {
cursor: default;
}
/* @end */
/* @group Right to Left */
.chosen-rtl {
text-align: right;
}
.chosen-rtl .chosen-single {
overflow: visible;
padding: 0 8px 0 0;
}
.chosen-rtl .chosen-single span {
margin-right: 0;
margin-left: 26px;
direction: rtl;
}
.chosen-rtl .chosen-single-with-deselect span {
margin-left: 38px;
}
.chosen-rtl .chosen-single div {
right: auto;
left: 3px;
}
.chosen-rtl .chosen-single abbr {
right: auto;
left: 26px;
}
.chosen-rtl .chosen-choices li {
float: right;
}
.chosen-rtl .chosen-choices li.search-field input[type="text"] {
direction: rtl;
}
.chosen-rtl .chosen-choices li.search-choice {
margin: 3px 5px 3px 0;
padding: 3px 5px 3px 19px;
}
.chosen-rtl .chosen-choices li.search-choice .search-choice-close {
right: auto;
left: 4px;
}
.chosen-rtl.chosen-container-single-nosearch .chosen-search,
.chosen-rtl .chosen-drop {
left: 9999px;
}
.chosen-rtl.chosen-container-single .chosen-results {
margin: 0 0 4px 4px;
padding: 0 4px 0 0;
}
.chosen-rtl .chosen-results li.group-option {
padding-right: 15px;
padding-left: 0;
}
.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div {
border-right: none;
}
.chosen-rtl .chosen-search input[type="text"] {
padding: 4px 5px 4px 20px;
background: white url('chosen-sprite.png') no-repeat -30px -20px;
background: url('chosen-sprite.png') no-repeat -30px -20px;
direction: rtl;
}
.chosen-rtl.chosen-container-single .chosen-single div b {
background-position: 6px 2px;
}
.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b {
background-position: -12px 2px;
}
/* @end */
/* @group Retina compatibility */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi), only screen and (min-resolution: 1.5dppx) {
.chosen-rtl .chosen-search input[type="text"],
.chosen-container-single .chosen-single abbr,
.chosen-container-single .chosen-single div b,
.chosen-container-single .chosen-search input[type="text"],
.chosen-container-multi .chosen-choices .search-choice .search-choice-close,
.chosen-container .chosen-results-scroll-down span,
.chosen-container .chosen-results-scroll-up span {
background-image: url('chosen-sprite@2x.png') !important;
background-size: 52px 37px !important;
background-repeat: no-repeat !important;
}
}
/* @end */
File diff suppressed because one or more lines are too long
@@ -1,10 +0,0 @@
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 347 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 324 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 352 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 340 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 503 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 506 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 203 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 176 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

@@ -1,359 +0,0 @@
/*
* FancyBox - jQuery Plugin
* Simple and fancy lightbox alternative
*
* Examples and documentation at: http://fancybox.net
*
* Copyright (c) 2008 - 2010 Janis Skarnelis
* That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated.
*
* Version: 1.3.4 (11/11/2010)
* Requires: jQuery v1.3+
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*/
#fancybox-loading {
position: fixed;
top: 50%;
left: 50%;
width: 40px;
height: 40px;
margin-top: -20px;
margin-left: -20px;
cursor: pointer;
overflow: hidden;
z-index: 1104;
display: none;
}
#fancybox-loading div {
position: absolute;
top: 0;
left: 0;
width: 40px;
height: 480px;
background-image: url('fancybox.png');
}
#fancybox-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
z-index: 1100;
display: none;
}
#fancybox-tmp {
padding: 0;
margin: 0;
border: 0;
overflow: auto;
display: none;
}
#fancybox-wrap {
position: absolute;
top: 0;
left: 0;
padding: 20px;
z-index: 1101;
outline: none;
display: none;
}
#fancybox-outer {
position: relative;
width: 100%;
height: 100%;
background: #fff;
}
#fancybox-content {
width: 0;
height: 0;
padding: 0;
outline: none;
position: relative;
overflow: hidden;
z-index: 1102;
border: 0px solid #fff;
}
#fancybox-hide-sel-frame {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: transparent;
z-index: 1101;
}
#fancybox-close {
position: absolute;
top: -15px;
right: -15px;
width: 30px;
height: 30px;
background: transparent url('fancybox.png') -40px 0px;
cursor: pointer;
z-index: 1103;
display: none;
}
#fancybox-error {
color: #444;
font: normal 12px/20px Arial;
padding: 14px;
margin: 0;
}
#fancybox-img {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
border: none;
outline: none;
line-height: 0;
vertical-align: top;
}
#fancybox-frame {
width: 100%;
height: 100%;
border: none;
display: block;
}
#fancybox-left, #fancybox-right {
position: absolute;
bottom: 0px;
height: 100%;
width: 35%;
cursor: pointer;
outline: none;
background: transparent url('blank.gif');
z-index: 1102;
display: none;
}
#fancybox-left {
left: 0px;
}
#fancybox-right {
right: 0px;
}
#fancybox-left-ico, #fancybox-right-ico {
position: absolute;
top: 50%;
left: -9999px;
width: 30px;
height: 30px;
margin-top: -15px;
cursor: pointer;
z-index: 1102;
display: block;
}
#fancybox-left-ico {
background-image: url('fancybox.png');
background-position: -40px -30px;
}
#fancybox-right-ico {
background-image: url('fancybox.png');
background-position: -40px -60px;
}
#fancybox-left:hover, #fancybox-right:hover {
visibility: visible; /* IE6 */
}
#fancybox-left:hover span {
left: 20px;
}
#fancybox-right:hover span {
left: auto;
right: 20px;
}
.fancybox-bg {
position: absolute;
padding: 0;
margin: 0;
border: 0;
width: 20px;
height: 20px;
z-index: 1001;
}
#fancybox-bg-n {
top: -20px;
left: 0;
width: 100%;
background-image: url('fancybox-x.png');
}
#fancybox-bg-ne {
top: -20px;
right: -20px;
background-image: url('fancybox.png');
background-position: -40px -162px;
}
#fancybox-bg-e {
top: 0;
right: -20px;
height: 100%;
background-image: url('fancybox-y.png');
background-position: -20px 0px;
}
#fancybox-bg-se {
bottom: -20px;
right: -20px;
background-image: url('fancybox.png');
background-position: -40px -182px;
}
#fancybox-bg-s {
bottom: -20px;
left: 0;
width: 100%;
background-image: url('fancybox-x.png');
background-position: 0px -20px;
}
#fancybox-bg-sw {
bottom: -20px;
left: -20px;
background-image: url('fancybox.png');
background-position: -40px -142px;
}
#fancybox-bg-w {
top: 0;
left: -20px;
height: 100%;
background-image: url('fancybox-y.png');
}
#fancybox-bg-nw {
top: -20px;
left: -20px;
background-image: url('fancybox.png');
background-position: -40px -122px;
}
#fancybox-title {
font-family: Helvetica;
font-size: 12px;
z-index: 1102;
}
.fancybox-title-inside {
padding-bottom: 10px;
text-align: center;
color: #333;
background: #fff;
position: relative;
}
.fancybox-title-outside {
padding-top: 10px;
color: #fff;
}
.fancybox-title-over {
position: absolute;
bottom: 0;
left: 0;
color: #FFF;
text-align: left;
}
#fancybox-title-over {
padding: 10px;
background-image: url('fancy_title_over.png');
display: block;
}
.fancybox-title-float {
position: absolute;
left: 0;
bottom: -20px;
height: 32px;
}
#fancybox-title-float-wrap {
border: none;
border-collapse: collapse;
width: auto;
}
#fancybox-title-float-wrap td {
border: none;
white-space: nowrap;
}
#fancybox-title-float-left {
padding: 0 0 0 15px;
background: url('fancybox.png') -40px -90px no-repeat;
}
#fancybox-title-float-main {
color: #FFF;
line-height: 29px;
font-weight: bold;
padding: 0 0 3px 0;
background: url('fancybox-x.png') 0px -40px;
}
#fancybox-title-float-right {
padding: 0 0 0 15px;
background: url('fancybox.png') -55px -90px no-repeat;
}
/* IE6 */
.fancybox-ie6 #fancybox-close { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_close.png', sizingMethod='scale'); }
.fancybox-ie6 #fancybox-left-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_nav_left.png', sizingMethod='scale'); }
.fancybox-ie6 #fancybox-right-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_nav_right.png', sizingMethod='scale'); }
.fancybox-ie6 #fancybox-title-over { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_over.png', sizingMethod='scale'); zoom: 1; }
.fancybox-ie6 #fancybox-title-float-left { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_left.png', sizingMethod='scale'); }
.fancybox-ie6 #fancybox-title-float-main { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_main.png', sizingMethod='scale'); }
.fancybox-ie6 #fancybox-title-float-right { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_right.png', sizingMethod='scale'); }
.fancybox-ie6 #fancybox-bg-w, .fancybox-ie6 #fancybox-bg-e, .fancybox-ie6 #fancybox-left, .fancybox-ie6 #fancybox-right, #fancybox-hide-sel-frame {
height: expression(this.parentNode.clientHeight + "px");
}
#fancybox-loading.fancybox-ie6 {
position: absolute; margin-top: 0;
top: expression( (-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px');
}
#fancybox-loading.fancybox-ie6 div { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_loading.png', sizingMethod='scale'); }
/* IE6, IE7, IE8 */
.fancybox-ie .fancybox-bg { background: transparent !important; }
.fancybox-ie #fancybox-bg-n { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_n.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-ne { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_ne.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-e { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_e.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-se { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_se.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-s { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_s.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-sw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_sw.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-w { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_w.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-nw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_nw.png', sizingMethod='scale'); }
@@ -1,360 +0,0 @@
html,body{margin:0;padding:0;}
h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,cite,code,del,dfn,em,img,q,s,samp,small,strike,strong,sub,sup,tt,var,dd,dl,dt,li,ol,ul,fieldset,form,label,legend,button,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;font-weight:normal;font-style:normal;font-size:100%;line-height:1;font-family:inherit;}
table{border-collapse:collapse;border-spacing:0;}
ol,ul{list-style:none;}
q:before,q:after,blockquote:before,blockquote:after{content:"";}
html{overflow-y:scroll;font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
a:focus{outline:thin dotted;}
a:hover,a:active{outline:0;}
article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}
audio:not([controls]){display:none;}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}
sup{top:-0.5em;}
sub{bottom:-0.25em;}
img{border:0;-ms-interpolation-mode:bicubic;}
button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;}
button,input{line-height:normal;*overflow:visible;}
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}
button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;}
input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;}
input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;}
textarea{overflow:auto;vertical-align:top;}
body{background-color:#ffffff;margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:18px;color:#404040;}
.container{width:940px;margin-left:auto;margin-right:auto;zoom:1;}.container:before,.container:after{display:table;content:"";zoom:1;}
.container:after{clear:both;}
.container-fluid{position:relative;min-width:940px;padding-left:20px;padding-right:20px;zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";zoom:1;}
.container-fluid:after{clear:both;}
.container-fluid>.sidebar{position:absolute;top:0;left:20px;width:220px;}
.container-fluid>.content{margin-left:240px;}
a{color:#0069d6;text-decoration:none;line-height:inherit;font-weight:inherit;}a:hover{color:#00438a;text-decoration:underline;}
.pull-right{float:right;}
.pull-left{float:left;}
.hide{display:none;}
.show{display:block;}
.row{zoom:1;margin-left:-20px;}.row:before,.row:after{display:table;content:"";zoom:1;}
.row:after{clear:both;}
.row>[class*="span"]{display:inline;float:left;margin-left:20px;}
.span1{width:40px;}
.span2{width:100px;}
.span3{width:160px;}
.span4{width:220px;}
.span5{width:280px;}
.span6{width:340px;}
.span7{width:400px;}
.span8{width:460px;}
.span9{width:520px;}
.span10{width:580px;}
.span11{width:640px;}
.span12{width:700px;}
.span13{width:760px;}
.span14{width:820px;}
.span15{width:880px;}
.span16{width:940px;}
.span17{width:1000px;}
.span18{width:1060px;}
.span19{width:1120px;}
.span20{width:1180px;}
.span21{width:1240px;}
.span22{width:1300px;}
.span23{width:1360px;}
.span24{width:1420px;}
.row>.offset1{margin-left:80px;}
.row>.offset2{margin-left:140px;}
.row>.offset3{margin-left:200px;}
.row>.offset4{margin-left:260px;}
.row>.offset5{margin-left:320px;}
.row>.offset6{margin-left:380px;}
.row>.offset7{margin-left:440px;}
.row>.offset8{margin-left:500px;}
.row>.offset9{margin-left:560px;}
.row>.offset10{margin-left:620px;}
.row>.offset11{margin-left:680px;}
.row>.offset12{margin-left:740px;}
.span-one-third{width:300px;}
.span-two-thirds{width:620px;}
.row>.offset-one-third{margin-left:340px;}
.row>.offset-two-thirds{margin-left:660px;}
p{font-size:13px;font-weight:normal;line-height:18px;margin-bottom:9px;}p small{font-size:11px;color:#bfbfbf;}
h1,h2,h3,h4,h5,h6{font-weight:bold;color:#404040;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#bfbfbf;}
h1{margin-bottom:18px;font-size:30px;line-height:36px;}h1 small{font-size:18px;}
h2{font-size:24px;line-height:36px;}h2 small{font-size:14px;}
h3,h4,h5,h6{line-height:36px;}
h3{font-size:18px;}h3 small{font-size:14px;}
h4{font-size:16px;}h4 small{font-size:12px;}
h5{font-size:14px;}
h6{font-size:13px;color:#bfbfbf;text-transform:uppercase;}
ul,ol{margin:0 0 18px 25px;}
ul ul,ul ol,ol ol,ol ul{margin-bottom:0;}
ul{list-style:disc;}
ol{list-style:decimal;}
li{line-height:18px;color:#808080;}
ul.unstyled{list-style:none;margin-left:0;}
dl{margin-bottom:18px;}dl dt,dl dd{line-height:18px;}
dl dt{font-weight:bold;}
dl dd{margin-left:9px;}
hr{margin:20px 0 19px;border:0;border-bottom:1px solid #eee;}
strong{font-style:inherit;font-weight:bold;}
em{font-style:italic;font-weight:inherit;line-height:inherit;}
.muted{color:#bfbfbf;}
blockquote{margin-bottom:18px;border-left:5px solid #eee;padding-left:15px;}blockquote p{font-size:14px;font-weight:300;line-height:18px;margin-bottom:0;}
blockquote small{display:block;font-size:12px;font-weight:300;line-height:18px;color:#bfbfbf;}blockquote small:before{content:'\2014 \00A0';}
address{display:block;line-height:18px;margin-bottom:18px;}
code,pre{padding:0 3px 2px;font-family:Monaco, Andale Mono, Courier New, monospace;font-size:12px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
code{background-color:#fee9cc;color:rgba(0, 0, 0, 0.75);padding:1px 3px;}
pre{background-color:#f5f5f5;display:block;padding:8.5px;margin:0 0 18px;line-height:18px;font-size:12px;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;white-space:pre;white-space:pre-wrap;word-wrap:break-word;}
form{margin-bottom:18px;}
fieldset{margin-bottom:18px;padding-top:18px;}fieldset legend{display:block;padding-left:150px;font-size:19.5px;line-height:1;color:#404040;*padding:0 0 5px 145px;*line-height:1.5;}
form .clearfix{margin-bottom:18px;zoom:1;}form .clearfix:before,form .clearfix:after{display:table;content:"";zoom:1;}
form .clearfix:after{clear:both;}
label,input,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:normal;}
label{padding-top:6px;font-size:13px;line-height:18px;float:left;width:130px;text-align:right;color:#404040;}
form .input{margin-left:150px;}
input[type=checkbox],input[type=radio]{cursor:pointer;}
input,textarea,select,.uneditable-input{display:inline-block;width:210px;height:18px;padding:4px;font-size:13px;line-height:18px;color:#808080;border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
select{padding:initial;}
input[type=checkbox],input[type=radio]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;border:none;}
input[type=file]{background-color:#ffffff;padding:initial;border:initial;line-height:initial;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
input[type=button],input[type=reset],input[type=submit]{width:auto;height:auto;}
select,input[type=file]{height:27px;*height:auto;line-height:27px;*margin-top:4px;}
select[multiple]{height:inherit;background-color:#ffffff;}
textarea{height:auto;}
.uneditable-input{background-color:#ffffff;display:block;border-color:#eee;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;}
:-moz-placeholder{color:#bfbfbf;}
::-webkit-input-placeholder{color:#bfbfbf;}
input,textarea{-webkit-transition:border linear 0.2s,box-shadow linear 0.2s;-moz-transition:border linear 0.2s,box-shadow linear 0.2s;-ms-transition:border linear 0.2s,box-shadow linear 0.2s;-o-transition:border linear 0.2s,box-shadow linear 0.2s;transition:border linear 0.2s,box-shadow linear 0.2s;-webkit-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1);}
input:focus,textarea:focus{outline:0;border-color:rgba(82, 168, 236, 0.8);-webkit-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1),0 0 8px rgba(82, 168, 236, 0.6);-moz-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1),0 0 8px rgba(82, 168, 236, 0.6);box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1),0 0 8px rgba(82, 168, 236, 0.6);}
input[type=file]:focus,input[type=checkbox]:focus,select:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;outline:1px dotted #666;}
form .clearfix.error>label,form .clearfix.error .help-block,form .clearfix.error .help-inline{color:#b94a48;}
form .clearfix.error input,form .clearfix.error textarea{color:#b94a48;border-color:#ee5f5b;}form .clearfix.error input:focus,form .clearfix.error textarea:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;}
form .clearfix.error .input-prepend .add-on,form .clearfix.error .input-append .add-on{color:#b94a48;background-color:#fce6e6;border-color:#b94a48;}
form .clearfix.warning>label,form .clearfix.warning .help-block,form .clearfix.warning .help-inline{color:#c09853;}
form .clearfix.warning input,form .clearfix.warning textarea{color:#c09853;border-color:#ccae64;}form .clearfix.warning input:focus,form .clearfix.warning textarea:focus{border-color:#be9a3f;-webkit-box-shadow:0 0 6px #e5d6b1;-moz-box-shadow:0 0 6px #e5d6b1;box-shadow:0 0 6px #e5d6b1;}
form .clearfix.warning .input-prepend .add-on,form .clearfix.warning .input-append .add-on{color:#c09853;background-color:#d2b877;border-color:#c09853;}
form .clearfix.success>label,form .clearfix.success .help-block,form .clearfix.success .help-inline{color:#468847;}
form .clearfix.success input,form .clearfix.success textarea{color:#468847;border-color:#57a957;}form .clearfix.success input:focus,form .clearfix.success textarea:focus{border-color:#458845;-webkit-box-shadow:0 0 6px #9acc9a;-moz-box-shadow:0 0 6px #9acc9a;box-shadow:0 0 6px #9acc9a;}
form .clearfix.success .input-prepend .add-on,form .clearfix.success .input-append .add-on{color:#468847;background-color:#bcddbc;border-color:#468847;}
.input-mini,input.mini,textarea.mini,select.mini{width:60px;}
.input-small,input.small,textarea.small,select.small{width:90px;}
.input-medium,input.medium,textarea.medium,select.medium{width:150px;}
.input-large,input.large,textarea.large,select.large{width:210px;}
.input-xlarge,input.xlarge,textarea.xlarge,select.xlarge{width:270px;}
.input-xxlarge,input.xxlarge,textarea.xxlarge,select.xxlarge{width:530px;}
textarea.xxlarge{overflow-y:auto;}
input.span1,textarea.span1{display:inline-block;float:none;width:30px;margin-left:0;}
input.span2,textarea.span2{display:inline-block;float:none;width:90px;margin-left:0;}
input.span3,textarea.span3{display:inline-block;float:none;width:150px;margin-left:0;}
input.span4,textarea.span4{display:inline-block;float:none;width:210px;margin-left:0;}
input.span5,textarea.span5{display:inline-block;float:none;width:270px;margin-left:0;}
input.span6,textarea.span6{display:inline-block;float:none;width:330px;margin-left:0;}
input.span7,textarea.span7{display:inline-block;float:none;width:390px;margin-left:0;}
input.span8,textarea.span8{display:inline-block;float:none;width:450px;margin-left:0;}
input.span9,textarea.span9{display:inline-block;float:none;width:510px;margin-left:0;}
input.span10,textarea.span10{display:inline-block;float:none;width:570px;margin-left:0;}
input.span11,textarea.span11{display:inline-block;float:none;width:630px;margin-left:0;}
input.span12,textarea.span12{display:inline-block;float:none;width:690px;margin-left:0;}
input.span13,textarea.span13{display:inline-block;float:none;width:750px;margin-left:0;}
input.span14,textarea.span14{display:inline-block;float:none;width:810px;margin-left:0;}
input.span15,textarea.span15{display:inline-block;float:none;width:870px;margin-left:0;}
input.span16,textarea.span16{display:inline-block;float:none;width:930px;margin-left:0;}
input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f5f5f5;border-color:#ddd;cursor:not-allowed;}
.actions{background:#f5f5f5;margin-top:18px;margin-bottom:18px;padding:17px 20px 18px 150px;border-top:1px solid #ddd;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;}.actions .secondary-action{float:right;}.actions .secondary-action a{line-height:30px;}.actions .secondary-action a:hover{text-decoration:underline;}
.help-inline,.help-block{font-size:13px;line-height:18px;color:#bfbfbf;}
.help-inline{padding-left:5px;*position:relative;*top:-5px;}
.help-block{display:block;max-width:600px;}
.inline-inputs{color:#808080;}.inline-inputs span{padding:0 2px 0 1px;}
.input-prepend input,.input-append input{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}
.input-prepend .add-on,.input-append .add-on{position:relative;background:#f5f5f5;border:1px solid #ccc;z-index:2;float:left;display:block;width:auto;min-width:16px;height:18px;padding:4px 4px 4px 5px;margin-right:-1px;font-weight:normal;line-height:18px;color:#bfbfbf;text-align:center;text-shadow:0 1px 0 #ffffff;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
.input-prepend .active,.input-append .active{background:#a9dba9;border-color:#46a546;}
.input-prepend .add-on{*margin-top:1px;}
.input-append input{float:left;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
.input-append .add-on{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;margin-right:0;margin-left:-1px;}
.inputs-list{margin:0 0 5px;width:100%;}.inputs-list li{display:block;padding:0;width:100%;}
.inputs-list label{display:block;float:none;width:auto;padding:0;margin-left:20px;line-height:18px;text-align:left;white-space:normal;}.inputs-list label strong{color:#808080;}
.inputs-list label small{font-size:11px;font-weight:normal;}
.inputs-list .inputs-list{margin-left:25px;margin-bottom:10px;padding-top:0;}
.inputs-list:first-child{padding-top:6px;}
.inputs-list li+li{padding-top:2px;}
.inputs-list input[type=radio],.inputs-list input[type=checkbox]{margin-bottom:0;margin-left:-20px;float:left;}
.form-stacked{padding-left:20px;}.form-stacked fieldset{padding-top:9px;}
.form-stacked legend{padding-left:0;}
.form-stacked label{display:block;float:none;width:auto;font-weight:bold;text-align:left;line-height:20px;padding-top:0;}
.form-stacked .clearfix{margin-bottom:9px;}.form-stacked .clearfix div.input{margin-left:0;}
.form-stacked .inputs-list{margin-bottom:0;}.form-stacked .inputs-list li{padding-top:0;}.form-stacked .inputs-list li label{font-weight:normal;padding-top:0;}
.form-stacked div.clearfix.error{padding-top:10px;padding-bottom:10px;padding-left:10px;margin-top:0;margin-left:-10px;}
.form-stacked .actions{margin-left:-20px;padding-left:20px;}
table{width:100%;margin-bottom:18px;padding:0;font-size:13px;border-collapse:collapse;}table th,table td{padding:10px 10px 9px;line-height:18px;text-align:left;}
table th{padding-top:9px;font-weight:bold;vertical-align:middle;}
table td{vertical-align:top;border-top:1px solid #ddd;}
table tbody th{border-top:1px solid #ddd;vertical-align:top;}
.condensed-table th,.condensed-table td{padding:5px 5px 4px;}
.bordered-table{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.bordered-table th+th,.bordered-table td+td,.bordered-table th+td{border-left:1px solid #ddd;}
.bordered-table thead tr:first-child th:first-child,.bordered-table tbody tr:first-child td:first-child{-webkit-border-radius:4px 0 0 0;-moz-border-radius:4px 0 0 0;border-radius:4px 0 0 0;}
.bordered-table thead tr:first-child th:last-child,.bordered-table tbody tr:first-child td:last-child{-webkit-border-radius:0 4px 0 0;-moz-border-radius:0 4px 0 0;border-radius:0 4px 0 0;}
.bordered-table tbody tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;}
.bordered-table tbody tr:last-child td:last-child{-webkit-border-radius:0 0 4px 0;-moz-border-radius:0 0 4px 0;border-radius:0 0 4px 0;}
table .span1{width:20px;}
table .span2{width:60px;}
table .span3{width:100px;}
table .span4{width:140px;}
table .span5{width:180px;}
table .span6{width:220px;}
table .span7{width:260px;}
table .span8{width:300px;}
table .span9{width:340px;}
table .span10{width:380px;}
table .span11{width:420px;}
table .span12{width:460px;}
table .span13{width:500px;}
table .span14{width:540px;}
table .span15{width:580px;}
table .span16{width:620px;}
.zebra-striped tbody tr:nth-child(odd) td,.zebra-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9;}
.zebra-striped tbody tr:hover td,.zebra-striped tbody tr:hover th{background-color:#f5f5f5;}
table .header{cursor:pointer;}table .header:after{content:"";float:right;margin-top:7px;border-width:0 4px 4px;border-style:solid;border-color:#000 transparent;visibility:hidden;}
table .headerSortUp,table .headerSortDown{background-color:rgba(141, 192, 219, 0.25);text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);}
table .header:hover:after{visibility:visible;}
table .headerSortDown:after,table .headerSortDown:hover:after{visibility:visible;filter:alpha(opacity=60);-khtml-opacity:0.6;-moz-opacity:0.6;opacity:0.6;}
table .headerSortUp:after{border-bottom:none;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000;visibility:visible;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:alpha(opacity=60);-khtml-opacity:0.6;-moz-opacity:0.6;opacity:0.6;}
table .blue{color:#049cdb;border-bottom-color:#049cdb;}
table .headerSortUp.blue,table .headerSortDown.blue{background-color:#ade6fe;}
table .green{color:#46a546;border-bottom-color:#46a546;}
table .headerSortUp.green,table .headerSortDown.green{background-color:#cdeacd;}
table .red{color:#9d261d;border-bottom-color:#9d261d;}
table .headerSortUp.red,table .headerSortDown.red{background-color:#f4c8c5;}
table .yellow{color:#ffc40d;border-bottom-color:#ffc40d;}
table .headerSortUp.yellow,table .headerSortDown.yellow{background-color:#fff6d9;}
table .orange{color:#f89406;border-bottom-color:#f89406;}
table .headerSortUp.orange,table .headerSortDown.orange{background-color:#fee9cc;}
table .purple{color:#7a43b6;border-bottom-color:#7a43b6;}
table .headerSortUp.purple,table .headerSortDown.purple{background-color:#e2d5f0;}
.topbar{height:40px;position:fixed;top:0;left:0;right:0;z-index:10000;overflow:visible;}.topbar a{color:#bfbfbf;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);}
.topbar h3 a:hover,.topbar .brand:hover,.topbar ul .active>a{background-color:#333;background-color:rgba(255, 255, 255, 0.05);color:#ffffff;text-decoration:none;}
.topbar h3{position:relative;}
.topbar h3 a,.topbar .brand{float:left;display:block;padding:8px 20px 12px;margin-left:-20px;color:#ffffff;font-size:20px;font-weight:200;line-height:1;}
.topbar p{margin:0;line-height:40px;}.topbar p a:hover{background-color:transparent;color:#ffffff;}
.topbar form{float:left;margin:5px 0 0 0;position:relative;filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1;}
.topbar form.pull-right{float:right;}
.topbar input{background-color:#444;background-color:rgba(255, 255, 255, 0.3);font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:normal;font-weight:13px;line-height:1;padding:4px 9px;color:#ffffff;color:rgba(255, 255, 255, 0.75);border:1px solid #111;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.25);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.25);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.25);-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none;}.topbar input:-moz-placeholder{color:#e6e6e6;}
.topbar input::-webkit-input-placeholder{color:#e6e6e6;}
.topbar input:hover{background-color:#bfbfbf;background-color:rgba(255, 255, 255, 0.5);color:#ffffff;}
.topbar input:focus,.topbar input.focused{outline:0;background-color:#ffffff;color:#404040;text-shadow:0 1px 0 #ffffff;border:0;padding:5px 10px;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);}
.topbar-inner,.topbar .fill{background-color:#222;background-color:#222222;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#333333), to(#222222));background-image:-moz-linear-gradient(top, #333333, #222222);background-image:-ms-linear-gradient(top, #333333, #222222);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #333333), color-stop(100%, #222222));background-image:-webkit-linear-gradient(top, #333333, #222222);background-image:-o-linear-gradient(top, #333333, #222222);background-image:linear-gradient(top, #333333, #222222);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);}
.topbar div>ul,.nav{display:block;float:left;margin:0 10px 0 0;position:relative;left:0;}.topbar div>ul>li,.nav>li{display:block;float:left;}
.topbar div>ul a,.nav a{display:block;float:none;padding:10px 10px 11px;line-height:19px;text-decoration:none;}.topbar div>ul a:hover,.nav a:hover{color:#ffffff;text-decoration:none;}
.topbar div>ul .active>a,.nav .active>a{background-color:#222;background-color:rgba(0, 0, 0, 0.5);}
.topbar div>ul.secondary-nav,.nav.secondary-nav{float:right;margin-left:10px;margin-right:0;}.topbar div>ul.secondary-nav .menu-dropdown,.nav.secondary-nav .menu-dropdown,.topbar div>ul.secondary-nav .dropdown-menu,.nav.secondary-nav .dropdown-menu{right:0;border:0;}
.topbar div>ul a.menu:hover,.nav a.menu:hover,.topbar div>ul li.open .menu,.nav li.open .menu,.topbar div>ul .dropdown-toggle:hover,.nav .dropdown-toggle:hover,.topbar div>ul .dropdown.open .dropdown-toggle,.nav .dropdown.open .dropdown-toggle{background:#444;background:rgba(255, 255, 255, 0.05);}
.topbar div>ul .menu-dropdown,.nav .menu-dropdown,.topbar div>ul .dropdown-menu,.nav .dropdown-menu{background-color:#333;}.topbar div>ul .menu-dropdown a.menu,.nav .menu-dropdown a.menu,.topbar div>ul .dropdown-menu a.menu,.nav .dropdown-menu a.menu,.topbar div>ul .menu-dropdown .dropdown-toggle,.nav .menu-dropdown .dropdown-toggle,.topbar div>ul .dropdown-menu .dropdown-toggle,.nav .dropdown-menu .dropdown-toggle{color:#ffffff;}.topbar div>ul .menu-dropdown a.menu.open,.nav .menu-dropdown a.menu.open,.topbar div>ul .dropdown-menu a.menu.open,.nav .dropdown-menu a.menu.open,.topbar div>ul .menu-dropdown .dropdown-toggle.open,.nav .menu-dropdown .dropdown-toggle.open,.topbar div>ul .dropdown-menu .dropdown-toggle.open,.nav .dropdown-menu .dropdown-toggle.open{background:#444;background:rgba(255, 255, 255, 0.05);}
.topbar div>ul .menu-dropdown li a,.nav .menu-dropdown li a,.topbar div>ul .dropdown-menu li a,.nav .dropdown-menu li a{color:#999;text-shadow:0 1px 0 rgba(0, 0, 0, 0.5);}.topbar div>ul .menu-dropdown li a:hover,.nav .menu-dropdown li a:hover,.topbar div>ul .dropdown-menu li a:hover,.nav .dropdown-menu li a:hover{background-color:#191919;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#292929), to(#191919));background-image:-moz-linear-gradient(top, #292929, #191919);background-image:-ms-linear-gradient(top, #292929, #191919);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #292929), color-stop(100%, #191919));background-image:-webkit-linear-gradient(top, #292929, #191919);background-image:-o-linear-gradient(top, #292929, #191919);background-image:linear-gradient(top, #292929, #191919);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#292929', endColorstr='#191919', GradientType=0);color:#ffffff;}
.topbar div>ul .menu-dropdown .active a,.nav .menu-dropdown .active a,.topbar div>ul .dropdown-menu .active a,.nav .dropdown-menu .active a{color:#ffffff;}
.topbar div>ul .menu-dropdown .divider,.nav .menu-dropdown .divider,.topbar div>ul .dropdown-menu .divider,.nav .dropdown-menu .divider{background-color:#222;border-color:#444;}
.topbar ul .menu-dropdown li a,.topbar ul .dropdown-menu li a{padding:4px 15px;}
li.menu,.dropdown{position:relative;}
a.menu:after,.dropdown-toggle:after{width:0;height:0;display:inline-block;content:"&darr;";text-indent:-99999px;vertical-align:top;margin-top:8px;margin-left:4px;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #ffffff;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;}
.menu-dropdown,.dropdown-menu{background-color:#ffffff;float:left;display:none;position:absolute;top:40px;z-index:900;min-width:160px;max-width:220px;_width:160px;margin-left:0;margin-right:0;padding:6px 0;zoom:1;border-color:#999;border-color:rgba(0, 0, 0, 0.2);border-style:solid;border-width:0 1px 1px;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:0 2px 4px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 2px 4px rgba(0, 0, 0, 0.2);box-shadow:0 2px 4px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.menu-dropdown li,.dropdown-menu li{float:none;display:block;background-color:none;}
.menu-dropdown .divider,.dropdown-menu .divider{height:1px;margin:5px 0;overflow:hidden;background-color:#eee;border-bottom:1px solid #ffffff;}
.topbar .dropdown-menu a,.dropdown-menu a{display:block;padding:4px 15px;clear:both;font-weight:normal;line-height:18px;color:#808080;text-shadow:0 1px 0 #ffffff;}.topbar .dropdown-menu a:hover,.dropdown-menu a:hover,.topbar .dropdown-menu a.hover,.dropdown-menu a.hover{background-color:#dddddd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#eeeeee), to(#dddddd));background-image:-moz-linear-gradient(top, #eeeeee, #dddddd);background-image:-ms-linear-gradient(top, #eeeeee, #dddddd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #eeeeee), color-stop(100%, #dddddd));background-image:-webkit-linear-gradient(top, #eeeeee, #dddddd);background-image:-o-linear-gradient(top, #eeeeee, #dddddd);background-image:linear-gradient(top, #eeeeee, #dddddd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#dddddd', GradientType=0);color:#404040;text-decoration:none;-webkit-box-shadow:inset 0 1px 0 rgba(0, 0, 0, 0.025),inset 0 -1px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 0 rgba(0, 0, 0, 0.025),inset 0 -1px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 0 rgba(0, 0, 0, 0.025),inset 0 -1px rgba(0, 0, 0, 0.025);}
.open .menu,.dropdown.open .menu,.open .dropdown-toggle,.dropdown.open .dropdown-toggle{color:#ffffff;background:#ccc;background:rgba(0, 0, 0, 0.3);}
.open .menu-dropdown,.dropdown.open .menu-dropdown,.open .dropdown-menu,.dropdown.open .dropdown-menu{display:block;}
.tabs,.pills{margin:0 0 18px;padding:0;list-style:none;zoom:1;}.tabs:before,.pills:before,.tabs:after,.pills:after{display:table;content:"";zoom:1;}
.tabs:after,.pills:after{clear:both;}
.tabs>li,.pills>li{float:left;}.tabs>li>a,.pills>li>a{display:block;}
.tabs{border-color:#ddd;border-style:solid;border-width:0 0 1px;}.tabs>li{position:relative;margin-bottom:-1px;}.tabs>li>a{padding:0 15px;margin-right:2px;line-height:34px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.tabs>li>a:hover{text-decoration:none;background-color:#eee;border-color:#eee #eee #ddd;}
.tabs .active>a,.tabs .active>a:hover{color:#808080;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;}
.tabs .menu-dropdown,.tabs .dropdown-menu{top:35px;border-width:1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px;}
.tabs a.menu:after,.tabs .dropdown-toggle:after{border-top-color:#999;margin-top:15px;margin-left:5px;}
.tabs li.open.menu .menu,.tabs .open.dropdown .dropdown-toggle{border-color:#999;}
.tabs li.open a.menu:after,.tabs .dropdown.open .dropdown-toggle:after{border-top-color:#555;}
.pills a{margin:5px 3px 5px 0;padding:0 15px;line-height:30px;text-shadow:0 1px 1px #ffffff;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}.pills a:hover{color:#ffffff;text-decoration:none;text-shadow:0 1px 1px rgba(0, 0, 0, 0.25);background-color:#00438a;}
.pills .active a{color:#ffffff;text-shadow:0 1px 1px rgba(0, 0, 0, 0.25);background-color:#0069d6;}
.pills-vertical>li{float:none;}
.tab-content>.tab-pane,.pill-content>.pill-pane,.tab-content>div,.pill-content>div{display:none;}
.tab-content>.active,.pill-content>.active{display:block;}
.breadcrumb{padding:7px 14px;margin:0 0 18px;background-color:#f5f5f5;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#ffffff), to(#f5f5f5));background-image:-moz-linear-gradient(top, #ffffff, #f5f5f5);background-image:-ms-linear-gradient(top, #ffffff, #f5f5f5);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #f5f5f5));background-image:-webkit-linear-gradient(top, #ffffff, #f5f5f5);background-image:-o-linear-gradient(top, #ffffff, #f5f5f5);background-image:linear-gradient(top, #ffffff, #f5f5f5);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;}.breadcrumb li{display:inline;text-shadow:0 1px 0 #ffffff;}
.breadcrumb .divider{padding:0 5px;color:#bfbfbf;}
.breadcrumb .active a{color:#404040;}
.hero-unit{background-color:#f5f5f5;margin-bottom:30px;padding:60px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;}
.hero-unit p{font-size:18px;font-weight:200;line-height:27px;}
footer{margin-top:17px;padding-top:17px;border-top:1px solid #eee;}
.page-header{margin-bottom:17px;border-bottom:1px solid #ddd;-webkit-box-shadow:0 1px 0 rgba(255, 255, 255, 0.5);-moz-box-shadow:0 1px 0 rgba(255, 255, 255, 0.5);box-shadow:0 1px 0 rgba(255, 255, 255, 0.5);}.page-header h1{margin-bottom:8px;}
.btn.danger,.alert-message.danger,.btn.danger:hover,.alert-message.danger:hover,.btn.error,.alert-message.error,.btn.error:hover,.alert-message.error:hover,.btn.success,.alert-message.success,.btn.success:hover,.alert-message.success:hover,.btn.info,.alert-message.info,.btn.info:hover,.alert-message.info:hover{color:#ffffff;}
.btn .close,.alert-message .close{font-family:Arial,sans-serif;line-height:18px;}
.btn.danger,.alert-message.danger,.btn.error,.alert-message.error{background-color:#c43c35;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(top, #ee5f5b, #c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#c43c35 #c43c35 #882a25;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);}
.btn.success,.alert-message.success{background-color:#57a957;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957));background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-ms-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(top, #62c462, #57a957);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#57a957 #57a957 #3d773d;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);}
.btn.info,.alert-message.info{background-color:#339bb9;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9));background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-ms-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(top, #5bc0de, #339bb9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#339bb9 #339bb9 #22697d;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);}
.btn{cursor:pointer;display:inline-block;background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6);background-image:-ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:-o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);padding:5px 14px 6px;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);color:#333;font-size:13px;line-height:normal;border:1px solid #ccc;border-bottom-color:#bbb;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-webkit-transition:0.1s linear all;-moz-transition:0.1s linear all;-ms-transition:0.1s linear all;-o-transition:0.1s linear all;transition:0.1s linear all;}.btn:hover{background-position:0 -15px;color:#333;text-decoration:none;}
.btn:focus{outline:1px dotted #666;}
.btn.primary{color:#ffffff;background-color:#0064cd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));background-image:-moz-linear-gradient(top, #049cdb, #0064cd);background-image:-ms-linear-gradient(top, #049cdb, #0064cd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));background-image:-webkit-linear-gradient(top, #049cdb, #0064cd);background-image:-o-linear-gradient(top, #049cdb, #0064cd);background-image:linear-gradient(top, #049cdb, #0064cd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#0064cd #0064cd #003f81;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);}
.btn.active,.btn:active{-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.25),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.25),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.25),0 1px 2px rgba(0, 0, 0, 0.05);}
.btn.disabled{cursor:default;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=65);-khtml-opacity:0.65;-moz-opacity:0.65;opacity:0.65;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
.btn[disabled]{cursor:default;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=65);-khtml-opacity:0.65;-moz-opacity:0.65;opacity:0.65;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
.btn.large{font-size:15px;line-height:normal;padding:9px 14px 9px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
.btn.small{padding:7px 9px 7px;font-size:11px;}
:root .alert-message,:root .btn{border-radius:0 \0;}
button.btn::-moz-focus-inner,input[type=submit].btn::-moz-focus-inner{padding:0;border:0;}
.close{float:right;color:#000000;font-size:20px;font-weight:bold;line-height:13.5px;text-shadow:0 1px 0 #ffffff;filter:alpha(opacity=25);-khtml-opacity:0.25;-moz-opacity:0.25;opacity:0.25;}.close:hover{color:#000000;text-decoration:none;filter:alpha(opacity=40);-khtml-opacity:0.4;-moz-opacity:0.4;opacity:0.4;}
.alert-message{position:relative;padding:7px 15px;margin-bottom:18px;color:#404040;background-color:#eedc94;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94));background-image:-moz-linear-gradient(top, #fceec1, #eedc94);background-image:-ms-linear-gradient(top, #fceec1, #eedc94);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94));background-image:-webkit-linear-gradient(top, #fceec1, #eedc94);background-image:-o-linear-gradient(top, #fceec1, #eedc94);background-image:linear-gradient(top, #fceec1, #eedc94);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#eedc94 #eedc94 #e4c652;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);border-width:1px;border-style:solid;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.25);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.25);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.25);}.alert-message .close{margin-top:1px;*margin-top:0;}
.alert-message a{font-weight:bold;color:#404040;}
.alert-message.danger p a,.alert-message.error p a,.alert-message.success p a,.alert-message.info p a{color:#ffffff;}
.alert-message h5{line-height:18px;}
.alert-message p{margin-bottom:0;}
.alert-message div{margin-top:5px;margin-bottom:2px;line-height:28px;}
.alert-message .btn{-webkit-box-shadow:0 1px 0 rgba(255, 255, 255, 0.25);-moz-box-shadow:0 1px 0 rgba(255, 255, 255, 0.25);box-shadow:0 1px 0 rgba(255, 255, 255, 0.25);}
.alert-message.block-message{background-image:none;background-color:#fdf5d9;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);padding:14px;border-color:#fceec1;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}.alert-message.block-message ul,.alert-message.block-message p{margin-right:30px;}
.alert-message.block-message ul{margin-bottom:0;}
.alert-message.block-message li{color:#404040;}
.alert-message.block-message .alert-actions{margin-top:5px;}
.alert-message.block-message.error,.alert-message.block-message.success,.alert-message.block-message.info{color:#404040;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);}
.alert-message.block-message.error{background-color:#fddfde;border-color:#fbc7c6;}
.alert-message.block-message.success{background-color:#d1eed1;border-color:#bfe7bf;}
.alert-message.block-message.info{background-color:#ddf4fb;border-color:#c6edf9;}
.alert-message.block-message.danger p a,.alert-message.block-message.error p a,.alert-message.block-message.success p a,.alert-message.block-message.info p a{color:#404040;}
.pagination{height:36px;margin:18px 0;}.pagination ul{float:left;margin:0;border:1px solid #ddd;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);}
.pagination li{display:inline;}
.pagination a{float:left;padding:0 14px;line-height:34px;border-right:1px solid;border-right-color:#ddd;border-right-color:rgba(0, 0, 0, 0.15);*border-right-color:#ddd;text-decoration:none;}
.pagination a:hover,.pagination .active a{background-color:#c7eefe;}
.pagination .disabled a,.pagination .disabled a:hover{background-color:transparent;color:#bfbfbf;}
.pagination .next a{border:0;}
.well{background-color:#f5f5f5;margin-bottom:20px;padding:19px;min-height:20px;border:1px solid #eee;border:1px solid rgba(0, 0, 0, 0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);}
.modal-backdrop{background-color:#000000;position:fixed;top:0;left:0;right:0;bottom:0;z-index:10000;}.modal-backdrop.fade{opacity:0;}
.modal-backdrop,.modal-backdrop.fade.in{filter:alpha(opacity=80);-khtml-opacity:0.8;-moz-opacity:0.8;opacity:0.8;}
.modal{position:fixed;top:50%;left:50%;z-index:11000;width:560px;margin:-250px 0 0 -280px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.modal .close{margin-top:7px;}
.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-ms-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%;}
.modal.fade.in{top:50%;}
.modal-header{border-bottom:1px solid #eee;padding:5px 15px;}
.modal-body{padding:15px;}
.modal-body form{margin-bottom:0;}
.modal-footer{background-color:#f5f5f5;padding:14px 15px 15px;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;zoom:1;margin-bottom:0;}.modal-footer:before,.modal-footer:after{display:table;content:"";zoom:1;}
.modal-footer:after{clear:both;}
.modal-footer .btn{float:right;margin-left:5px;}
.modal .popover,.modal .twipsy{z-index:12000;}
.twipsy{display:block;position:absolute;visibility:visible;padding:5px;font-size:11px;z-index:1000;filter:alpha(opacity=80);-khtml-opacity:0.8;-moz-opacity:0.8;opacity:0.8;}.twipsy.fade.in{filter:alpha(opacity=80);-khtml-opacity:0.8;-moz-opacity:0.8;opacity:0.8;}
.twipsy.above .twipsy-arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;}
.twipsy.left .twipsy-arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;}
.twipsy.below .twipsy-arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;}
.twipsy.right .twipsy-arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;}
.twipsy-inner{padding:3px 8px;background-color:#000000;color:white;text-align:center;max-width:200px;text-decoration:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
.twipsy-arrow{position:absolute;width:0;height:0;}
.popover{position:absolute;top:0;left:0;z-index:1000;padding:5px;display:none;}.popover.above .arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;}
.popover.right .arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;}
.popover.below .arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;}
.popover.left .arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;}
.popover .arrow{position:absolute;width:0;height:0;}
.popover .inner{background:#000000;background:rgba(0, 0, 0, 0.8);padding:3px;overflow:hidden;width:280px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);}
.popover .title{background-color:#f5f5f5;padding:9px 15px;line-height:1;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;border-bottom:1px solid #eee;}
.popover .content{background-color:#ffffff;padding:14px;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.popover .content p,.popover .content ul,.popover .content ol{margin-bottom:0;}
.fade{-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-ms-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;opacity:0;}.fade.in{opacity:1;}
.label{padding:1px 3px 2px;font-size:9.75px;font-weight:bold;color:#ffffff;text-transform:uppercase;white-space:nowrap;background-color:#bfbfbf;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}.label.important{background-color:#c43c35;}
.label.warning{background-color:#f89406;}
.label.success{background-color:#46a546;}
.label.notice{background-color:#62cffc;}
.media-grid{margin-left:-20px;margin-bottom:0;zoom:1;}.media-grid:before,.media-grid:after{display:table;content:"";zoom:1;}
.media-grid:after{clear:both;}
.media-grid li{display:inline;}
.media-grid a{float:left;padding:4px;margin:0 0 18px 20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);}.media-grid a img{display:block;}
.media-grid a:hover{border-color:#0069d6;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);}
/* grocery CRUD extra */
input,textarea,select,.uneditable-input{color:#444444;}
/* ------------------ */
@@ -1,29 +0,0 @@
.qq-upload-button {
display:block; /* or inline-block */
padding: 7px 15px;
text-align:center;
border:1px solid #AAA;
color: #555555;
border-radius: 5px;
float:left;
background: #ccc;
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));
background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);
background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);
background-image: -o-linear-gradient(bottom, #ccc 0%, #eee 60%);
background-image: -ms-linear-gradient(top, #cccccc 0%,#eeeeee 60%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#cccccc', endColorstr='#eeeeee',GradientType=0 );
background-image: linear-gradient(top, #cccccc 0%,#eeeeee 60%);
}
.qq-upload-button:hover {
background: #bbb;
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #bbb), color-stop(0.6, #ddd));
background-image: -webkit-linear-gradient(center bottom, #bbb 0%, #ddd 60%);
background-image: -moz-linear-gradient(center bottom, #bbb 0%, #ddd 60%);
background-image: -o-linear-gradient(bottom, #bbb 0%, #ddd 60%);
background-image: -ms-linear-gradient(top, #bbbbbb 0%,#dddddd 60%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#bbbbbb', endColorstr='#dddddd',GradientType=0 );
background-image: linear-gradient(top, #bbbbbb 0%,#dddddd 60%);
}
.qq-upload-button:focus {outline:1px dotted black;}
@@ -1,71 +0,0 @@
.qq-uploader { position:relative; width: 100%;}
.qq-upload-button {
display:block; /* or inline-block */
padding: 7px 15px;
text-align:center;
border:1px solid #AAA;
color: #555555;
border-radius: 5px;
float:left;
}
.qq-upload-button-hover {
}
.qq-upload-button-focus {outline:1px dotted black;}
.qq-upload-drop-area {
position:absolute; top:0; left:0; width: 510px; height: 35px; z-index:2;
background:#FF9797; text-align:center;
}
.qq-upload-drop-area span {
display:block; position:absolute; top: 50%; width:100%; margin-top:-8px; font-size:16px;
}
.qq-upload-drop-area-active {background:#FF7171;}
.qq-upload-list {margin: 10px 5px 0px 10px; padding:0; list-style: none; float:left;}
.qq-upload-list li { margin:0; padding:0; line-height:15px; font-size:12px; float:left;}
.qq-upload-file, .qq-upload-spinner, .qq-upload-size, .qq-upload-cancel, .qq-upload-failed-text {
margin-right: 7px;
}
.qq-upload-file {}
.qq-upload-spinner {display:inline-block; background: url("loading.gif"); width:15px; height:15px; vertical-align:text-bottom;}
.qq-upload-size,.qq-upload-cancel {font-size:11px;}
.qq-upload-failed-text {display:none;}
.qq-upload-fail .qq-upload-failed-text {display:inline;}
a.qq-upload-cancel
{
color: red !important;
}
/* Grocery CRUD extras */
a.open-file
{
color: #000;
font-weight: bold;
text-decoration: none;
}
a.open-file:hover
{
text-decoration: underline;
}
a.delete-anchor
{
color: red !important;
}
.image-thumbnail img
{
cursor: -moz-zoom-in;
cursor: -webkit-zoom-in;
}
.form-field-box.even .image-thumbnail img
{
border: 4px solid #fff;
}
.form-field-box.odd .image-thumbnail img
{
border: 4px solid #ddd;
}
/* ------------------- */
@@ -1,56 +0,0 @@
@charset 'UTF-8';
/*
* jQuery File Upload UI Plugin CSS 6.0
* https://github.com/blueimp/jQuery-File-Upload
*
* Copyright 2010, Sebastian Tschan
* https://blueimp.net
*
* Licensed under the MIT license:
* http://www.opensource.org/licenses/MIT
*/
.fileinput-button input {
position: absolute;
top: 0;
right: 0;
margin: 0;
border: solid transparent;
border-width: 0 0 100px 200px;
opacity: 0;
filter: alpha(opacity=0);
-moz-transform: translate(-300px, 0) scale(4);
direction: ltr;
cursor: pointer;
}
.fileinput-button {
position: relative;
overflow: hidden;
float: left;
margin-right: 4px;
}
.progressbar,
.progressbar div {
width: 200px;
height: 20px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 2px 0 rgba(0, 0, 0, 0.3);
-moz-box-shadow: inset 0 1px 2px 0 rgba(0, 0, 0, 0.3);
box-shadow: inset 0 1px 2px 0 rgba(0, 0, 0, 0.3);
background: #fff;
}
.progressbar div {
width: auto;
background: url(progressbar.gif);
}
.fileupload-progressbar {
float: right;
width: 400px;
margin-top: 4px;
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

@@ -1,10 +0,0 @@
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
@@ -1,10 +0,0 @@
.ui-timepicker-div .ui-widget-header { margin-bottom: 8px; }
.ui-timepicker-div dl { text-align: left; }
.ui-timepicker-div dl dt { height: 25px; margin-bottom: -25px; }
.ui-timepicker-div dl dd { margin: 0 10px 10px 65px; }
.ui-timepicker-div td { font-size: 90%; }
.ui-tpicker-grid-label { background: none; border: none; margin: 0; padding: 0; }
.ui-timepicker-rtl{ direction: rtl; }
.ui-timepicker-rtl dl { text-align: right; }
.ui-timepicker-rtl dl dd { margin: 0 65px 10px 10px; }
@@ -1,116 +0,0 @@
@CHARSET "UTF-8";
/*demo page css*/
.demoHeaders {
margin-top: 2em;
}
#dialog_link {
padding: .4em 1em .4em 20px;
text-decoration: none;
position: relative;
}
#dialog_link span.ui-icon {
margin: 0 5px 0 0;
position: absolute;
left: .2em;
top: 50%;
margin-top: -8px;
}
ul#icons {
margin: 0;
padding: 0;
}
ul#icons li {
margin: 2px;
position: relative;
padding: 4px 0;
cursor: pointer;
float: left;
list-style: none;
}
ul#icons span.ui-icon {
float: left;
margin: 0 4px;
}
.selHrs, .selMins {
width:2.5em;
}
.selHrs {
margin-left:5px;
}
.dayPeriod {
display:inline-block;
width:20px;
}
.slider {
height:120px;
float:left;
margin:10px
}
#tpSelectedTime {
margin-bottom:0;
border-bottom:1px solid #aaa;
padding:5px;
color:#000;
background:#fff;
text-transform:none;
}
#tpSelectedTime span {
fon-weight:bold;
}
#datepicker {
}
#pickerplug {
overflow:hidden;
display:none;
position:absolute;
top:200px;
left:300px;
padding:0;
margin:0;
z-index:500;
}
#pickerplug li {
display:block;
float:left;
}
#timepicker {
border:1px solid #aaa;
background:#fff;
}
#timepicker ul {
overflow:hidden;
padding:5px;
}
#timepicker ul li {
position:relative;
display:block;
float:left;
width:50px;
}
#timepicker ul li h4 {
width:100%;
background:transparent;
color:#000;
text-align:center;
}
#timepicker ul li .slider {
position:relative;
left:10px;
/* background:#FBF9EE url(images/ui-bg_glass_55_fbf9ee_1x400.png) repeat-x scroll 50% 50%;
border:1px solid #FCEFA1;*/
}
@@ -1,32 +0,0 @@
/* Multiselect
----------------------------------*/
.ui-multiselect { border: solid 1px; font-size: 0.8em; }
.ui-multiselect ul { -moz-user-select: none; }
.ui-multiselect li { margin: 0; padding: 0; cursor: default; line-height: 20px; height: 20px; font-size: 11px; list-style: none; }
.ui-multiselect li a { color: #999; text-decoration: none; padding: 0; display: block; float: left; cursor: pointer;}
.ui-multiselect li.ui-draggable-dragging { padding-left: 10px; }
.ui-multiselect div.selected { position: relative; padding: 0; margin: 0; border: 0; float:left; }
.ui-multiselect ul.selected { position: relative; padding: 0; overflow: auto; overflow-x: hidden; background: #fff; margin: 0; list-style: none; border: 0; position: relative; width: 100%; }
.ui-multiselect ul.selected li { }
.ui-multiselect div.available { position: relative; padding: 0; margin: 0; border: 0; float:left; border-left: 1px solid; }
.ui-multiselect ul.available { position: relative; padding: 0; overflow: auto; overflow-x: hidden; background: #fff; margin: 0; list-style: none; border: 0; width: 100%; }
.ui-multiselect ul.available li { padding-left: 10px; }
.ui-multiselect .ui-state-default { border: none; margin-bottom: 1px; position: relative; padding-left: 20px;}
.ui-multiselect .ui-state-hover { border: none; }
.ui-multiselect .ui-widget-header {border: none; font-size: 11px; margin-bottom: 1px;}
.ui-multiselect .add-all { float: right; padding: 10px 7px 10px 0; font-size: 11px; }
.ui-multiselect .remove-all { float: right; padding: 10px 7px 11px 0; font-size: 11px; }
.ui-multiselect .search { float: left; padding:0;}
.ui-multiselect .count { float: left; padding: 10px 7px;}
.ui-multiselect li span.ui-icon-arrowthick-2-n-s { position: absolute; left: 2px; }
.ui-multiselect li a.action { position: absolute; right: 2px; top: 2px; }
.ui-multiselect input.search { height: 20px !important; padding: 2px !important; opacity: 0.5 !important; margin: 4px !important; width: 150px !important; }
select.multiselect{ width:704px; }
Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

@@ -1,644 +0,0 @@
/*
Uniform Theme: Uniform Default
Version: 1.8
By: Josh Pyles
License: MIT License
---
For use with the Uniform plugin:
http://pixelmatrixdesign.com/uniform/
---
Generated by Uniform Theme Generator:
http://pixelmatrixdesign.com/uniform/themer.html
*/
/* Global Declaration */
div.selector,
div.selector span,
div.checker span,
div.radio span,
div.uploader,
div.uploader span.action,
div.button,
div.button span {
background-image: url(images/sprite.png);
background-repeat: no-repeat;
-webkit-font-smoothing: antialiased;
}
.selector,
.radio,
.checker,
.uploader,
.button,
.selector *,
.radio *,
.checker *,
.uploader *,
.button *{
margin: 0;
padding: 0;
}
/* INPUT & TEXTAREA */
input.text,
input.email,
input.search,
input.tel,
input.url,
input.datetime,
input.date,
input.month,
input.week,
input.time,
input.datetime-local,
input.number,
input.color,
input.password,
select.uniform-multiselect,
textarea.uniform {
font-size: 12px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-weight: normal;
padding: 3px;
color: #777;
background: url('images/bg-input-focus.png') repeat-x 0px 0px;
background: url('images/bg-input.png') repeat-x 0px 0px;
border-top: solid 1px #aaa;
border-left: solid 1px #aaa;
border-bottom: solid 1px #ccc;
border-right: solid 1px #ccc;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
outline: 0;
}
/* remove default webkit and possible mozilla .search styles */
input.search, input.search:active {
-moz-appearance: none;
-webkit-appearance: none;
}
input.text:focus,
input.email:focus,
input.search:focus,
input.tel:focus,
input.url:focus,
input.datetime:focus,
input.date:focus,
input.month:focus,
input.week:focus,
input.time:focus,
input.datetime-local:focus,
input.number:focus,
input.color:focus,
input.password:focus,
select.uniform-multiselect:focus,
textarea.uniform:focus {
-webkit-box-shadow: 0px 0px 4px rgba(0,0,0,0.3);
-moz-box-shadow: 0px 0px 4px rgba(0,0,0,0.3);
box-shadow: 0px 0px 4px rgba(0,0,0,0.3);
border-color: #999;
background: url('images/bg-input-focus.png') repeat-x 0px 0px;
}
/* SPRITES */
/* Select */
div.selector {
background-position: -483px -130px;
line-height: 26px;
height: 26px;
}
div.selector span {
background-position: right 0px;
height: 26px;
line-height: 26px;
}
div.selector select {
/* change these to adjust positioning of select element */
top: 0px;
left: 0px;
}
div.selector:active,
div.selector.active {
background-position: -483px -156px;
}
div.selector:active span,
div.selector.active span {
background-position: right -26px;
}
div.selector.focus, div.selector.hover, div.selector:hover {
background-position: -483px -182px;
}
div.selector.focus span, div.selector.hover span, div.selector:hover span {
background-position: right -52px;
}
div.selector.focus:active,
div.selector.focus.active,
div.selector:hover:active,
div.selector.active:hover {
background-position: -483px -208px;
}
div.selector.focus:active span,
div.selector:hover:active span,
div.selector.active:hover span,
div.selector.focus.active span {
background-position: right -78px;
}
div.selector.disabled {
background-position: -483px -234px;
}
div.selector.disabled span {
background-position: right -104px;
}
/* Checkbox */
div.checker {
width: 19px;
height: 19px;
}
div.checker input {
width: 19px;
height: 19px;
}
div.checker span {
background-position: 0px -260px;
height: 19px;
width: 19px;
}
div.checker:active span,
div.checker.active span {
background-position: -19px -260px;
}
div.checker.focus span,
div.checker:hover span {
background-position: -38px -260px;
}
div.checker.focus:active span,
div.checker:active:hover span,
div.checker.active:hover span,
div.checker.focus.active span {
background-position: -57px -260px;
}
div.checker span.checked {
background-position: -76px -260px;
}
div.checker:active span.checked,
div.checker.active span.checked {
background-position: -95px -260px;
}
div.checker.focus span.checked,
div.checker:hover span.checked {
background-position: -114px -260px;
}
div.checker.focus:active span.checked,
div.checker:hover:active span.checked,
div.checker.active:hover span.checked,
div.checker.active.focus span.checked {
background-position: -133px -260px;
}
div.checker.disabled span,
div.checker.disabled:active span,
div.checker.disabled.active span {
background-position: -152px -260px;
}
div.checker.disabled span.checked,
div.checker.disabled:active span.checked,
div.checker.disabled.active span.checked {
background-position: -171px -260px;
}
/* Radio */
div.radio {
width: 18px;
height: 18px;
}
div.radio input {
width: 18px;
height: 18px;
}
div.radio span {
height: 18px;
width: 18px;
background-position: 0px -279px;
}
div.radio:active span,
div.radio.active span {
background-position: -18px -279px;
}
div.radio.focus span,
div.radio:hover span {
background-position: -36px -279px;
}
div.radio.focus:active span,
div.radio:active:hover span,
div.radio.active:hover span,
div.radio.active.focus span {
background-position: -54px -279px;
}
div.radio span.checked {
background-position: -72px -279px;
}
div.radio:active span.checked,
div.radio.active span.checked {
background-position: -90px -279px;
}
div.radio.focus span.checked, div.radio:hover span.checked {
background-position: -108px -279px;
}
div.radio.focus:active span.checked,
div.radio:hover:active span.checked,
div.radio.focus.active span.checked,
div.radio.active:hover span.checked {
background-position: -126px -279px;
}
div.radio.disabled span,
div.radio.disabled:active span,
div.radio.disabled.active span {
background-position: -144px -279px;
}
div.radio.disabled span.checked,
div.radio.disabled:active span.checked,
div.radio.disabled.active span.checked {
background-position: -162px -279px;
}
/* Uploader */
div.uploader {
background-position: 0px -297px;
height: 28px;
}
div.uploader span.action {
background-position: right -409px;
height: 24px;
line-height: 24px;
}
div.uploader span.filename {
height: 24px;
/* change this line to adjust positioning of filename area */
margin: 2px 0px 2px 2px;
line-height: 24px;
}
div.uploader.focus,
div.uploader.hover,
div.uploader:hover {
background-position: 0px -353px;
}
div.uploader.focus span.action,
div.uploader.hover span.action,
div.uploader:hover span.action {
background-position: right -437px;
}
div.uploader.active span.action,
div.uploader:active span.action {
background-position: right -465px;
}
div.uploader.focus.active span.action,
div.uploader:focus.active span.action,
div.uploader.focus:active span.action,
div.uploader:focus:active span.action {
background-position: right -493px;
}
div.uploader.disabled {
background-position: 0px -325px;
}
div.uploader.disabled span.action {
background-position: right -381px;
}
div.button {
background-position: 0px -523px;
}
div.button span {
background-position: right -643px;
}
div.button.focus,
div.button:focus,
div.button:hover,
div.button.hover {
background-position: 0px -553px;
}
div.button.focus span,
div.button:focus span,
div.button:hover span,
div.button.hover span {
background-position: right -673px;
}
div.button.active,
div.button:active {
background-position: 0px -583px;
}
div.button.active span,
div.button:active span {
background-position: right -703px;
color: #555;
}
div.button.disabled,
div.button:disabled {
background-position: 0px -613px;
}
div.button.disabled span,
div.button:disabled span {
background-position: right -733px;
color: #bbb;
cursor: default;
}
/* PRESENTATION */
/* Button */
div.button {
height: 30px;
}
div.button span {
margin-left: 13px;
height: 22px;
padding-top: 8px;
font-weight: bold;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 12px;
letter-spacing: 1px;
text-transform: uppercase;
padding-left: 2px;
padding-right: 15px;
}
/* Select */
div.selector {
width: 190px;
font-size: 12px;
}
div.selector select {
min-width: 190px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 12px;
border: solid 1px #fff;
}
div.selector span {
padding: 0px 25px 0px 2px;
cursor: pointer;
}
div.selector span {
color: #666;
width: 158px;
text-shadow: 0 1px 0 #fff;
}
div.selector.disabled span {
color: #bbb;
}
/* Checker */
div.checker {
margin-right: 5px;
}
/* Radio */
div.radio {
margin-right: 3px;
}
/* Uploader */
div.uploader {
width: 190px;
cursor: pointer;
}
div.uploader span.action {
width: 85px;
text-align: center;
text-shadow: #fff 0px 1px 0px;
background-color: #fff;
font-size: 11px;
font-weight: bold;
}
div.uploader span.filename {
color: #777;
width: 82px;
border-right: solid 1px #bbb;
font-size: 11px;
}
div.uploader input {
width: 190px;
}
div.uploader.disabled span.action {
color: #aaa;
}
div.uploader.disabled span.filename {
border-color: #ddd;
color: #aaa;
}
/*
CORE FUNCTIONALITY
Not advised to edit stuff below this line
-----------------------------------------------------
*/
.selector,
.checker,
.button,
.radio,
.uploader {
display: -moz-inline-box;
display: inline-block;
vertical-align: middle;
zoom: 1;
*display: inline;
}
.selector select:focus, .radio input:focus, .checker input:focus, .uploader input:focus {
outline: 0;
}
/* Button */
div.button a,
div.button button,
div.button input {
position: absolute;
}
div.button {
cursor: pointer;
position: relative;
}
div.button span {
display: -moz-inline-box;
display: inline-block;
line-height: 1;
text-align: center;
}
/* Select */
div.selector {
position: relative;
padding-left: 10px;
overflow: hidden;
}
div.selector span {
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
div.selector select {
position: absolute;
opacity: 0;
filter: alpha(opacity=0);
-moz-opacity: 0;
height: 25px;
border: none;
background: none;
}
/* Checker */
div.checker {
position: relative;
}
div.checker span {
display: -moz-inline-box;
display: inline-block;
text-align: center;
}
div.checker input {
opacity: 0;
filter: alpha(opacity=0);
-moz-opacity: 0;
display: inline-block;
background: none;
}
/* Radio */
div.radio {
position: relative;
}
div.radio span {
display: -moz-inline-box;
display: inline-block;
text-align: center;
}
div.radio input {
opacity: 0;
filter: alpha(opacity=0);
-moz-opacity: 0;
text-align: center;
display: inline-block;
background: none;
}
/* Uploader */
div.uploader {
position: relative;
overflow: hidden;
cursor: default;
}
div.uploader span.action {
float: left;
display: inline;
padding: 2px 0px;
overflow: hidden;
cursor: pointer;
}
div.uploader span.filename {
padding: 0px 10px;
float: left;
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
cursor: default;
}
div.uploader input {
opacity: 0;
filter: alpha(opacity=0);
-moz-opacity: 0;
position: absolute;
top: 0;
right: 0;
bottom: 0;
float: right;
height: 25px;
border: none;
cursor: default;
}
-10
View File
@@ -1,10 +0,0 @@
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 274 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 387 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 375 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 368 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 384 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 360 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

@@ -1,10 +0,0 @@
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
File diff suppressed because one or more lines are too long
-10
View File
@@ -1,10 +0,0 @@
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
-7
View File
@@ -1,7 +0,0 @@
/*
Copyright (c) 2008 Ryan Grove <ryan@wonko.com>. All rights reserved.
Licensed under the BSD License:
http://www.opensource.org/licenses/bsd-license.html
Version: 1.0.4
*/
var LazyLoad=function(){var E=document,D=null,A=[],C;function B(){if(C){return }var G=navigator.userAgent,F;C={gecko:0,ie:0,webkit:0};F=G.match(/AppleWebKit\/(\S*)/);if(F&&F[1]){C.webkit=parseFloat(F[1])}else{F=G.match(/MSIE\s([^;]*)/);if(F&&F[1]){C.ie=parseFloat(F[1])}else{if((/Gecko\/(\S*)/).test(G)){C.gecko=1;F=G.match(/rv:([^\s\)]*)/);if(F&&F[1]){C.gecko=parseFloat(F[1])}}}}}return{load:function(K,L,J,I){var H=E.getElementsByTagName("head")[0],G,F;if(K){K=K.constructor===Array?K:[K];for(G=0;G<K.length;++G){A.push({url:K[G],callback:G===K.length-1?L:null,obj:J,scope:I})}}if(D||!(D=A.shift())){return }B();F=E.createElement("script");F.src=D.url;if(C.ie){F.onreadystatechange=function(){if(this.readyState==="loaded"||this.readyState==="complete"){LazyLoad.requestComplete()}}}else{if(C.gecko||C.webkit>=420){F.onload=LazyLoad.requestComplete;F.onerror=LazyLoad.requestComplete}}H.appendChild(F);if(!C.ie&&!C.gecko&&!(C.webkit>=420)){F=E.createElement("script");F.appendChild(E.createTextNode("LazyLoad.requestComplete();"));H.appendChild(F)}},loadOnce:function(N,O,L,P,G){var H=[],I=E.getElementsByTagName("script"),M,J,K,F;N=N.constructor===Array?N:[N];for(M=0;M<N.length;++M){K=false;F=N[M];for(J=0;J<I.length;++J){if(F===I[J].src){K=true;break}}if(!K){H.push(F)}}if(H.length>0){LazyLoad.load(H,O,L,P)}else{if(G){if(L){if(P){O.call(L)}else{O.call(window,L)}}else{O.call()}}}},requestComplete:function(){if(D.callback){if(D.obj){if(D.scope){D.callback.call(D.obj)}else{D.callback.call(window,D.obj)}}else{D.callback.call()}}D=null;if(A.length){LazyLoad.load()}}}}();
-82
View File
@@ -1,82 +0,0 @@
var js_libraries = [];
var fnOpenEditForm = function(this_element){
var href_url = this_element.attr("href");
var dialog_height = $(window).height() - 80;
//Close all
$(".ui-dialog-content").dialog("close");
$.ajax({
url: href_url,
data: {
is_ajax: 'true'
},
type: 'post',
dataType: 'json',
beforeSend: function() {
this_element.closest('.flexigrid').addClass('loading-opacity');
this_element.closest('.dataTablesContainer').addClass('loading-opacity');
},
complete: function(){
this_element.closest('.flexigrid').removeClass('loading-opacity');
this_element.closest('.dataTablesContainer').removeClass('loading-opacity');
},
success: function (data) {
if (typeof CKEDITOR !== 'undefined' && typeof CKEDITOR.instances !== 'undefined') {
$.each(CKEDITOR.instances,function(index){
delete CKEDITOR.instances[index];
});
}
LazyLoad.loadOnce(data.js_lib_files);
LazyLoad.load(data.js_config_files);
$.each(data.css_files,function(index,css_file){
load_css_file(css_file);
});
$("<div/>").html(data.output).dialog({
width: 910,
modal: true,
height: dialog_height,
close: function(){
$(this).remove();
},
open: function(){
var this_dialog = $(this);
$('#cancel-button').click(function(){
this_dialog.dialog("close");
});
}
});
}
});
};
var add_edit_button_listener = function () {
//If dialog AJAX forms is turned on from grocery CRUD config
if (dialog_forms) {
$('.edit_button,.add_button').unbind('click');
$('.edit_button,.add_button').click(function(){
fnOpenEditForm($(this));
return false;
});
}
}
var load_css_file = function(css_file) {
if ($('head').find('link[href="'+css_file+'"]').length == 0) {
$('head').append($('<link/>').attr("type","text/css")
.attr("rel","stylesheet").attr("href",css_file));
}
};
-10
View File
@@ -1,10 +0,0 @@
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-87
View File
@@ -1,87 +0,0 @@
(function() {
(function($) {
var my_timer = null;
var my_timer2 = null;
return $.fn.ajaxChosen = function(options, callback) {
var select;
select = this;
this.chosen({allow_single_deselect:true});
this.next('.chzn-container').find(".search-field > input").bind('keyup', function() {
var field, val;
val = $.trim($(this).attr('value'));
if (val.length < 2 || val === $(this).data('prevVal')) return false;
if (this.timer) clearTimeout(this.timer);
$(this).data('prevVal', val);
field = $(this);
options.data = {
term: val,
field_name: select.attr('name') //Inserted for grocery CRUD
};
if (typeof success === "undefined" || success === null) {
success = options.success;
}
options.success = function(data) {
var items;
if (!(data != null)) return;
select.find('option').each(function() {
if (!$(this).is(":selected")) return $(this).remove();
});
items = callback(data);
$.each(items, function(value, text) {
return $("<option />").attr('value', value).html(text).appendTo(select);
});
select.trigger("liszt:updated");
field.attr('value', val);
if (typeof success !== "undefined" && success !== null) return success();
};
if(my_timer !== null) clearTimeout(my_timer);
my_timer = setTimeout(function() {
return $.ajax(options);
}, 800);
return my_timer;
});
return this.next('.chzn-container').find(".chzn-search > input").bind('keyup', function() {
var field, val;
val = $.trim($(this).attr('value'));
if (val.length < 2 || val === $(this).data('prevVal')) return false;
field = $(this);
options.data = {
term: val,
field_name: select.attr('name') //Inserted for grocery CRUD
};
if (typeof success === "undefined" || success === null) {
success = options.success;
}
options.success = function(data) {
var items;
if (!(data != null)) return;
select.find('option').each(function() {
return $(this).remove();
});
items = callback(data);
$.each(items, function(value, text) {
return $("<option />").attr('value', value).html(text).appendTo(select);
});
select.trigger("liszt:updated");
field.attr('value', val);
if (typeof success !== "undefined" && success !== null) return success();
};
if(my_timer2 !== null) clearTimeout(my_timer2);
my_timer2 = setTimeout(function() {
return $.ajax(options);
}, 800);
return my_timer2;
});
};
})(jQuery);
}).call(this);
@@ -1,10 +0,0 @@
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<p>Directory access is forbidden.</p>
</body>
</html>
@@ -1,17 +0,0 @@
$(function(){
$('.datetime-input').datetimepicker({
timeFormat: 'HH:mm:ss',
dateFormat: js_date_format,
showButtonPanel: true,
changeMonth: true,
changeYear: true
});
$('.datetime-input-clear').button();
$('.datetime-input-clear').click(function(){
$(this).parent().find('.datetime-input').val("");
return false;
});
});
@@ -1,3 +0,0 @@
$(function(){
$(".chosen-select,.chosen-multiple-select").chosen({allow_single_deselect:true});
});
@@ -1,4 +0,0 @@
$(function(){
$( 'textarea.texteditor' ).ckeditor({toolbar:'Full'});
$( 'textarea.mini-texteditor' ).ckeditor({toolbar:'Basic',width:700});
});
@@ -1,16 +0,0 @@
$(function(){
$('.datepicker-input').datepicker({
dateFormat: js_date_format,
showButtonPanel: true,
changeMonth: true,
changeYear: true
});
$('.datepicker-input-clear').button();
$('.datepicker-input-clear').click(function(){
$(this).parent().find('.datepicker-input').val("");
return false;
});
});
@@ -1,14 +0,0 @@
$(function(){
$('.datetime-input').datetime({
userLang : 'en',
americanMode: true,
});
$('.datetime-input-clear').button();
$('.datetime-input-clear').click(function(){
$(this).parent().find('.datetime-input').val("");
return false;
});
});
@@ -1,9 +0,0 @@
$(function(){
$('.image-thumbnail').fancybox({
'transitionIn' : 'elastic',
'transitionOut' : 'elastic',
'speedIn' : 600,
'speedOut' : 200,
'overlayShow' : false
});
});
@@ -1,160 +0,0 @@
function show_upload_button(unique_id, uploader_element)
{
$('#upload-state-message-'+unique_id).html('');
$("#loading-"+unique_id).hide();
$('#upload-button-'+unique_id).slideDown('fast');
$("input[rel="+uploader_element.attr('name')+"]").val('');
$('#success_'+unique_id).slideUp('fast');
}
function load_fancybox(elem)
{
elem.fancybox({
'transitionIn' : 'elastic',
'transitionOut' : 'elastic',
'speedIn' : 600,
'speedOut' : 200,
'overlayShow' : false
});
}
$(function(){
$('.gc-file-upload').each(function(){
var unique_id = $(this).attr('id');
var uploader_url = $(this).attr('rel');
var uploader_element = $(this);
var delete_url = $('#delete_url_'+unique_id).attr('href');
eval("var file_upload_info = upload_info_"+unique_id+"");
$(this).fileupload({
dataType: 'json',
url: uploader_url,
dropZone: $(this).closest('.form-field-box'),
cache: false,
acceptFileTypes: file_upload_info.accepted_file_types,
beforeSend: function(){
$('#upload-state-message-'+unique_id).html(string_upload_file);
$("#loading-"+unique_id).show();
$("#upload-button-"+unique_id).slideUp("fast");
},
limitMultiFileUploads: 1,
maxFileSize: file_upload_info.max_file_size,
send: function (e, data) {
var errors = '';
if (data.files.length > 1) {
errors += error_max_number_of_files + "\n" ;
}
$.each(data.files,function(index, file){
if (!(data.acceptFileTypes.test(file.type) || data.acceptFileTypes.test(file.name))) {
errors += error_accept_file_types + "\n";
}
if (data.maxFileSize && file.size > data.maxFileSize) {
errors += error_max_file_size + "\n";
}
if (typeof file.size === 'number' && file.size < data.minFileSize) {
errors += error_min_file_size + "\n";
}
});
if(errors != '')
{
alert(errors);
return false;
}
return true;
},
done: function (e, data) {
if(typeof data.result.success != 'undefined' && data.result.success)
{
$("#loading-"+unique_id).hide();
$("#progress-"+unique_id).html('');
$.each(data.result.files, function (index, file) {
$('#upload-state-message-'+unique_id).html('');
$("input[rel="+uploader_element.attr('name')+"]").val(file.name);
var file_name = file.name;
var is_image = (file_name.substr(-4) == '.jpg'
|| file_name.substr(-4) == '.png'
|| file_name.substr(-5) == '.jpeg'
|| file_name.substr(-4) == '.gif'
|| file_name.substr(-5) == '.tiff')
? true : false;
if(is_image)
{
$('#file_'+unique_id).addClass('image-thumbnail');
load_fancybox($('#file_'+unique_id));
$('#file_'+unique_id).html('<img src="'+file.url+'" height="50" />');
}
else
{
$('#file_'+unique_id).removeClass('image-thumbnail');
$('#file_'+unique_id).unbind("click");
$('#file_'+unique_id).html(file_name);
}
$('#file_'+unique_id).attr('href',file.url);
$('#hidden_'+unique_id).val(file_name);
$('#success_'+unique_id).fadeIn('slow');
$('#delete_url_'+unique_id).attr('rel',file_name);
$('#upload-button-'+unique_id).slideUp('fast');
});
}
else if(typeof data.result.message != 'undefined')
{
alert(data.result.message);
show_upload_button(unique_id, uploader_element);
}
else
{
alert(error_on_uploading);
show_upload_button(unique_id, uploader_element);
}
},
autoUpload: true,
error: function()
{
alert(error_on_uploading);
show_upload_button(unique_id, uploader_element);
},
fail: function(e, data)
{
// data.errorThrown
// data.textStatus;
// data.jqXHR;
alert(error_on_uploading);
show_upload_button(unique_id, uploader_element);
},
progress: function (e, data) {
$("#progress-"+unique_id).html(string_progress + parseInt(data.loaded / data.total * 100, 10) + '%');
}
});
$('#delete_'+unique_id).click(function(){
if( confirm(message_prompt_delete_file) )
{
var file_name = $('#delete_url_'+unique_id).attr('rel');
$.ajax({
url: delete_url+"/"+file_name,
cache: false,
success:function(){
show_upload_button(unique_id, uploader_element);
},
beforeSend: function(){
$('#upload-state-message-'+unique_id).html(string_delete_file);
$('#success_'+unique_id).hide();
$("#loading-"+unique_id).show();
$("#upload-button-"+unique_id).slideUp("fast");
}
});
}
return false;
});
});
});
@@ -1,35 +0,0 @@
// ----------------------------------------------------------------------------
// markItUp!
// ----------------------------------------------------------------------------
// Copyright (C) 2011 Jay Salvat
// http://markitup.jaysalvat.com/
// ----------------------------------------------------------------------------
// Html tags
// http://en.wikipedia.org/wiki/html
// ----------------------------------------------------------------------------
// Basic set. Feel free to add more tags
// ----------------------------------------------------------------------------
var mySettings = {
onShiftEnter: {keepDefault:false, replaceWith:'<br />\n'},
onCtrlEnter: {keepDefault:false, openWith:'\n<p>', closeWith:'</p>'},
onTab: {keepDefault:false, replaceWith:' '},
markupSet: [
{name:'Bold', key:'B', openWith:'(!(<strong>|!|<b>)!)', closeWith:'(!(</strong>|!|</b>)!)' },
{name:'Italic', key:'I', openWith:'(!(<em>|!|<i>)!)', closeWith:'(!(</em>|!|</i>)!)' },
{name:'Stroke through', key:'S', openWith:'<del>', closeWith:'</del>' },
{separator:'---------------' },
{name:'Bulleted List', openWith:' <li>', closeWith:'</li>', multiline:true, openBlockWith:'<ul>\n', closeBlockWith:'\n</ul>'},
{name:'Numeric List', openWith:' <li>', closeWith:'</li>', multiline:true, openBlockWith:'<ol>\n', closeBlockWith:'\n</ol>'},
{separator:'---------------' },
{name:'Picture', key:'P', replaceWith:'<img src="[![Source:!:http://]!]" alt="[![Alternative text]!]" />' },
{name:'Link', key:'L', openWith:'<a href="[![Link:!:http://]!]"(!( title="[![Title]!]")!)>', closeWith:'</a>', placeHolder:'Your text to link...' },
{separator:'---------------' },
{name:'Clean', className:'clean', replaceWith:function(markitup) { return markitup.selection.replace(/<(.*?)>/g, "") } },
{name:'Preview', className:'preview', call:'preview'}
]
};
$(document).ready(function() {
$('.texteditor').markItUp(mySettings);
$( 'textarea.mini-texteditor' ).markItUp(mySettings);
});
@@ -1,3 +0,0 @@
$(function(){
$(".multiselect").multiselect();
});
@@ -1,53 +0,0 @@
function success_message(success_message)
{
noty({
text: success_message,
type: 'success',
dismissQueue: true,
layout: 'top',
callback: {
afterShow: function() {
setTimeout(function(){
$.noty.closeAll();
},7000);
}
}
});
}
function error_message(error_message)
{
noty({
text: error_message,
type: 'error',
layout: 'top',
dismissQueue: true
});
}
function form_success_message(success_message)
{
$('#report-success').slideUp('fast');
$('#report-success').html(success_message);
if ($('#report-success').closest('.ui-dialog').length !== 0) {
$('.go-to-edit-form').click(function(){
fnOpenEditForm($(this));
return false;
});
}
$('#report-success').slideDown('normal');
$('#report-error').slideUp('fast').html('');
}
function form_error_message(error_message)
{
$('#report-error').slideUp('fast');
$('#report-error').html(error_message);
$('#report-error').slideDown('normal');
$('#report-success').slideUp('fast').html('');
}
@@ -1,36 +0,0 @@
$(function(){
$('.numeric').numeric();
$('.numeric').keydown(function(e){
if(e.keyCode == 38)
{
if(IsNumeric($(this).val()))
{
var new_number = parseInt($(this).val()) + 1;
$(this).val(new_number);
}else if($(this).val().length == 0)
{
var new_number = 1;
$(this).val(new_number);
}
}
else if(e.keyCode == 40)
{
if(IsNumeric($(this).val()))
{
var new_number = parseInt($(this).val()) - 1;
$(this).val(new_number);
}else if($(this).val().length == 0)
{
var new_number = -1;
$(this).val(new_number);
}
}
});
});
function IsNumeric(input)
{
return (input - 0) == input && input.length > 0;
}

Some files were not shown because too many files have changed in this diff Show More