diff --git a/config/cakepdf.php b/config/cakepdf.php index b5974f37d7..2994e72fa1 100755 --- a/config/cakepdf.php +++ b/config/cakepdf.php @@ -10,6 +10,7 @@ 'dpi' => 96, 'no-stop-slow-scripts' => true, 'enable-local-file-access' => true, + '--javascript-delay' =>5000 ], ], 'margin' => [ diff --git a/config/routes.php b/config/routes.php index a88439f713..8ddff50166 100755 --- a/config/routes.php +++ b/config/routes.php @@ -44,7 +44,7 @@ */ Router::defaultRouteClass(DashedRoute::class); -Router::extensions(['json', 'xml', 'csv']); +Router::extensions(['json', 'xml', 'csv','pdf']); Router::prefix('api', function ($routes) { $routes->setExtensions(['json', 'xml','pdf']); $routes->resources('Sadrs', [ diff --git a/src/Controller/Manager/CommentsController.php b/src/Controller/Manager/CommentsController.php index 9a66baceeb..a7c2f47fc7 100755 --- a/src/Controller/Manager/CommentsController.php +++ b/src/Controller/Manager/CommentsController.php @@ -4,6 +4,7 @@ namespace App\Controller\Manager; use App\Controller\AppController; +use Cake\Filesystem\File; use Cake\ORM\TableRegistry; use Cake\Utility\Text; use Cake\View\Helper\HtmlHelper; @@ -16,6 +17,7 @@ */ class CommentsController extends AppController { + /** * Index method * @@ -204,4 +206,35 @@ public function delete($id = null) return $this->redirect(['action' => 'index']); } + + public function commentFileDownload($id = null) + { + $attachment = $this->Attachments->get($id); + + if (!$attachment) { + $this->Flash->error(__('The requested file does not exist!')); + return $this->redirect($this->referer()); + } + + // Get the directory name and file name from the attachment entity + $directory = $attachment->dirname; + $fileName = $attachment->basename; + + // Construct the full file path + $filePath = ROOT . DS . $directory . $fileName; + + // Create a File object for the file + $file = new File($filePath); + if (!$file->exists()) { + $this->Flash->error(__('The requested file does not exist!')); + return $this->redirect($this->referer()); + } + + $response = $this->response->withFile( + $file->path, + ['download' => true, 'name' => $attachment->basename] + ); + + return $response; + } } diff --git a/src/Controller/Manager/SadrsController.php b/src/Controller/Manager/SadrsController.php index 71c24f57a3..431c3207ca 100755 --- a/src/Controller/Manager/SadrsController.php +++ b/src/Controller/Manager/SadrsController.php @@ -15,7 +15,7 @@ class SadrsController extends AppController { - + public $page_options = array('25' => '25', '50' => '50', '100' => '100'); /** * Index method @@ -24,26 +24,26 @@ class SadrsController extends AppController */ public function index() - { + { $criteria = array(); $criteria['Sadrs.deleted'] = false; $criteria['Sadrs.archived'] = false; $criteria['Sadrs.submitted'] = 2; $criteria['Sadrs.copied !='] = '1'; $limit = $this->request->getQuery('pages', 1000); // Default to 10 if 'pages' is not set - + $this->paginate = [ 'contain' => array('Users', 'Pqmps', 'Medications', 'Counties', 'SubCounties', 'Designations'), 'conditions' => $criteria - ]; + ]; $this->paginate = [ 'contain' => ['Users', 'Pqmps', 'Medications', 'Counties', 'SubCounties', 'Designations'], 'conditions' => $criteria, 'order' => ['Sadrs.created' => 'DESC'], - 'limit'=>$limit - ]; + 'limit' => $limit + ]; $sadrs = $this->paginate($this->Sadrs->find('search', ['search' => $this->request->getQuery()])); - + $this->set('sadrs', $sadrs); $this->set('page_options', $this->page_options); } @@ -56,12 +56,67 @@ public function index() * @return \Cake\Http\Response|null|void Renders view * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. */ + public function download($id = null) + { + // Retrieve the Sadr record with all related data + $sadr = $this->Sadrs->get($id, [ + 'contain' => ['Users', 'Pqmps', 'ExternalComment' => ['Attachments'], 'Medications', 'Counties', 'Attachments', 'SubCounties', 'Designations', 'SadrDescriptions', 'SadrFollowups', 'SadrListOfDrugs' => ['Routes', 'Frequencies', 'Doses'], 'SadrListOfMedicines', 'SadrReaction'], + ]); +// debug($sadr); +// exit; + // Set the Sadr data to be used in the template + $this->set(compact('sadr')); + + // Define the filename for download + $filename = 'SADR_' . $sadr['id'] . '.xml'; + + // Render the template and set the response for download + $this->viewBuilder()->enableAutoLayout(false); // Disable the layout + $this->response = $this->response + ->withType('xml') // Set the response content type to XML + ->withDownload($filename); // Force the file download + + return $this->render('download'); + // $filename = 'SADR_' . $sadr['id'] . '.xml'; + // $sadr = json_encode($sadr); + + // // Set the response headers for file download + // $response = $this->response + // ->withType('xml') // Set the response content type to XML + // ->withStringBody($sadr) // Set the XML content as the body + // ->withDownload($filename); // Force the file download + + // return $response; + } + + + public function view($id = null) { $sadr = $this->Sadrs->get($id, [ - 'contain' => ['Users', 'Pqmps', 'ExternalComment'=>['Attachments'], 'Medications', 'Counties', 'Attachments', 'SubCounties', 'Designations', 'SadrDescriptions', 'SadrFollowups', 'SadrListOfDrugs', 'SadrListOfMedicines', 'SadrReaction'], + 'contain' => ['Users', 'Pqmps', 'ExternalComment' => ['Attachments'], 'Medications', 'Counties', 'Attachments', 'SubCounties', 'Designations', 'SadrDescriptions', 'SadrFollowups', 'SadrListOfDrugs' => [ + 'Routes', + 'Frequencies', + 'Doses' + ], 'SadrListOfMedicines', 'SadrReaction'], ]); + if ($this->request->getParam('_ext') === 'pdf') { + // debug($sadr); + // exit; + $reference_no = $sadr['reference_no']; + // debug($reference_no); + $reference_no = str_replace('/', '_', $reference_no); + // debug($reference_no); + // exit; + $this->viewBuilder()->enableAutoLayout(false); + $this->viewBuilder()->setClassName('CakePdf.Pdf'); + $this->viewBuilder()->setOptions([ + 'pdfConfig' => [ + 'filename' => $reference_no . '' . '.pdf' + ] + ]); + } $this->set(compact('sadr')); } diff --git a/src/Controller/Reporter/SadrsController.php b/src/Controller/Reporter/SadrsController.php index a668668225..377ff6b055 100755 --- a/src/Controller/Reporter/SadrsController.php +++ b/src/Controller/Reporter/SadrsController.php @@ -56,7 +56,9 @@ public function index() public function view($id = null) { $sadr = $this->Sadrs->get($id, [ - 'contain' => ['Users', 'Pqmps', 'ExternalComment' => ['Attachments'], 'Medications', 'Counties', 'Attachments', 'SubCounties', 'Designations', 'SadrDescriptions', 'SadrFollowups', 'SadrListOfDrugs', 'SadrListOfMedicines', 'SadrReaction'], + 'contain' => ['Users', 'Pqmps', 'ExternalComment' => ['Attachments'], 'Medications', 'Counties', 'Attachments', 'SubCounties', 'Designations', 'SadrDescriptions', 'SadrFollowups', 'SadrListOfDrugs'=>[ + 'Routes','Frequencies','Doses' + ], 'SadrListOfMedicines', 'SadrReaction'], ]); // debug($sadr); // exit; diff --git a/src/Model/Table/SadrListOfDrugsTable.php b/src/Model/Table/SadrListOfDrugsTable.php index 35d8d0dda2..f1af96972a 100755 --- a/src/Model/Table/SadrListOfDrugsTable.php +++ b/src/Model/Table/SadrListOfDrugsTable.php @@ -78,76 +78,33 @@ public function initialize(array $config): void */ public function validationDefault(Validator $validator): Validator { - $validator - ->integer('sadr_id') - ->allowEmptyString('sadr_id'); - - $validator - ->integer('sadr_followup_id') - ->allowEmptyString('sadr_followup_id'); - - $validator - ->integer('dose_id') - ->allowEmptyString('dose_id'); - - $validator - ->integer('route_id') - ->allowEmptyString('route_id'); $validator - ->integer('frequency_id') - ->allowEmptyString('frequency_id'); + ->notEmptyString('drug_name', 'Please provide drug name'); $validator - ->scalar('frequency_id_other') - ->maxLength('frequency_id_other', 255) - ->allowEmptyString('frequency_id_other'); + ->notEmptyString('brand_name', 'Please specify the brand name of the suspected drug'); $validator - ->scalar('drug_name') - ->maxLength('drug_name', 255) - ->allowEmptyString('drug_name'); + ->notEmptyString('dose', 'Please specify the dosage') + ->numeric('dose', 'dose must be a numeric value.'); // Enforce numeric validation if input is provided $validator - ->scalar('brand_name') - ->maxLength('brand_name', 255) - ->allowEmptyString('brand_name'); + ->notEmptyString('dose_id', 'Please specify the dose units'); $validator - ->scalar('batch_no') - ->maxLength('batch_no', 255) - ->allowEmptyString('batch_no'); + ->notEmptyString('route_id', 'Please specify the route'); $validator - ->scalar('manufacturer') - ->maxLength('manufacturer', 255) - ->allowEmptyString('manufacturer'); + ->notEmptyString('frequency_id', 'Please specify the frequency'); $validator - ->scalar('dose') - ->maxLength('dose', 100) - ->allowEmptyString('dose'); + ->notEmptyString('start_date', 'Please specify the start date for the suspected drug'); - $validator - ->date('start_date') - ->allowEmptyDate('start_date'); - - $validator - ->date('stop_date') - ->allowEmptyDate('stop_date'); - - $validator - ->scalar('indication') - ->maxLength('indication', 100) - ->allowEmptyString('indication'); - - $validator - ->scalar('suspected_drug') - ->maxLength('suspected_drug', 100) - ->allowEmptyString('suspected_drug'); return $validator; } + /** * Returns a rules checker object that will be used for validating diff --git a/src/Model/Table/SadrsTable.php b/src/Model/Table/SadrsTable.php index 68f6afd7b8..e9cd7523eb 100755 --- a/src/Model/Table/SadrsTable.php +++ b/src/Model/Table/SadrsTable.php @@ -207,8 +207,6 @@ public function initialize(array $config): void public function validationDefault(Validator $validator): Validator { - - // Set validation rules here ***** $validator @@ -283,8 +281,41 @@ public function validationDefault(Validator $validator): Validator return true; // If no date_of_birth, skip validation }, 'message' => 'Date of onset of reaction must be on or after date of birth.', + ]) + ->add('date_of_onset_of_reaction', 'dateAfterStartDates', [ + 'rule' => function ($value, $context) { + // Check if sadr_list_of_drugs is present and loop through it + if (!empty($context['data']['sadr_list_of_drugs'])) { + foreach ($context['data']['sadr_list_of_drugs'] as $drug) { + // Check if the drug is suspected and has a start_date + if (!empty($drug['start_date']) && !empty($drug['suspected_drug']) && $drug['suspected_drug'] == 1) { + // Compare the date_of_onset_of_reaction with start_date + if (strtotime($value) <= strtotime($drug['start_date'])) { + return false; // Validation fails if date is not after start_date + } + } + } + } + return true; // Validation passes if all checks are satisfied + }, + 'message' => 'The date of onset of the reaction must come after the start date of the suspected drug(s).', + ]); + + $validator ->add('sadr_list_of_drugs', 'atLeastOneSuspectedDrug', [ + 'rule' => function ($value, $context) { + // Check if sadr_list_of_drugs is present and loop through it + if (!empty($context['data']['sadr_list_of_drugs'])) { + foreach ($context['data']['sadr_list_of_drugs'] as $drug) { + // Check if at least one drug is suspected + if (!empty($drug['suspected_drug']) && $drug['suspected_drug'] == 1) { + return true; // Validation passes if at least one suspected drug is found + } + } + } + return false; // Validation fails if no suspected drugs are found + }, + 'message' => 'At least one drug must be marked as suspected.', ]); - $validator ->scalar('description_of_reaction') @@ -306,6 +337,8 @@ public function validationDefault(Validator $validator): Validator $validator ->scalar('outcome') ->notEmptyString('outcome', 'Please specify outcome'); + + $validator ->scalar('reporter_name') ->notEmptyString('reporter_name', 'Please provide reporter name'); @@ -324,6 +357,9 @@ public function validationDefault(Validator $validator): Validator ->scalar('weight') ->allowEmptyString('weight') // Allow empty weight ->numeric('weight', 'Weight must be a numeric value.'); // Enforce numeric validation if input is provided + + + $validator ->scalar('height') ->allowEmptyString('height') // Allow empty height diff --git a/templates/Manager/Sadrs/download.php b/templates/Manager/Sadrs/download.php new file mode 100755 index 0000000000..ff14660443 --- /dev/null +++ b/templates/Manager/Sadrs/download.php @@ -0,0 +1,319 @@ +'; echo "\n"; ?> + + + + ichicsr + 2.1 + 2.0 + KE-PPB- + PPB + KE + 204 + + + + 1 + KE-PPB- + KE + KE + + + 1 + + + + + + + + 102 + + 102 + + 0) { + echo 1; + } else { + echo 2; + } + ?> + + + KE-PPB- + + 0 + 0 + + + + + + + + + + + + + KE + + + + + + + + 3 + Pharmacy and Poisons Board + Department of Pharmacovigilance + Dr. + Christabel + N. + Khaemba + P.O. Box:27663-00506 + Nairobi + + 00506 + KE + 720608811 + + 254 + 2713409 + 20 + 254 + pv@pharmacyboardkenya.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '.$birthdatef.''; + // echo "\n"; + // } else { + // echo ''; + // echo "\n"; + // } + + // if(isset($birthdatef)) { + // echo ''; + // if($birthdatef == 102) echo date('Ymd', strtotime(implode('-', $sadr['date_of_birth']))); + // if($birthdatef == 602) echo $sadr['date_of_birth']['year']; + // if($birthdatef == 610) echo $sadr['date_of_birth']['year'].$sadr['date_of_birth']['month']; + // echo ''; + // echo "\n"; + // } else { + // echo ''; + // echo "\n"; + // } + ?> + + + + + 1, + 'infant' => 2, + 'child' => 3, + 'adolescent' => 4, + 'adult' => 5, + 'elderly' => 6, + ); + if (!empty($sadr['age_group']) && array_key_exists($sadr['age_group'], $ages)) echo ''.$ages[$sadr['age_group']].''; + echo "\n"; + ?> + + + + + + + + + + + + + + + 23.0 + + + + + + + + + + + + + + + 1, + 'recovering/resolving' => 2, + 'recovered/resolved with sequelae' => 3, + 'not recovered/not resolved' => 4, + // 'fatal - unrelated to reaction' => 8, + // 'fatal - reaction may be contributory' => 7, + 'fatal' => 5, + 'unknown' => 6, + ); + if (!empty($sadr['outcome'])) echo $outcomes[strtolower($sadr['outcome'])]; + ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 102 + + + + 1, + 'dose increased' => 3, + 'dose reduced' => 2, + 'dose not changed' => 4, + 'not applicable' => 6, + 'unknown' => 5, + ); + if (!empty($sadr['action_taken']) && $sadrListOfDrug['suspected_drug'] == 1) echo $actions[strtolower($sadr['action_taken'])]; + ?> + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/templates/Manager/Sadrs/pdf/view.php b/templates/Manager/Sadrs/pdf/view.php new file mode 100755 index 0000000000..7d8e9afc15 --- /dev/null +++ b/templates/Manager/Sadrs/pdf/view.php @@ -0,0 +1,381 @@ +assign('SADR', 'active'); +$ichecked = "☑"; +$nchecked = "☐"; +?> + + + +
+
+ +
+
+ +

(FOM001/HPT/VMS/SOP/001)

+
+
+ Html->image('coa.png', array('alt' => 'in confidence', 'style' => 'margin-left: 45%;', 'fullBase' => true, 'class' => 'pull-right'))); + ?> +
+

MINISTRY OF HEALTH

+
PHARMACY AND POISONS BOARD
+
P.O. Box 27663-00506 NAIROBI
+
Tel: +254795743049
+
Email: pv@ppb.go.ke
+
SUSPECTED ADVERSE DRUG REACTION REPORTING FORM
+
+
+
+ + + + + + + + +
REPORT TITLE:REPORT ID: +

+

+
+ + + + + + +
+
The report is on:
+

Suspected adverse drug reaction

+

Suspected Therapeutic ineffectiveness

+

Suspected misuse, abuse and / or dependence on medicines

+

Off-label Use

+
+
Product category (Tick appropriate box)
+

Medicinal product

+

Herbal product

+

Cosmeceuticals

+

Others

+

+
+
+ + + + + + + + + + + + + + + + + + + + +
NAME OF INSTITUTION: COUNTY:
ADDRESS: SUB-COUNTY:
INSTITUTION CODE: Phone:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PATIENT'S INITIALS:request->getSession()->read('Auth.User.user_type') != 'Public Health Program') echo $sadr['patient_name'] ?> WARD / CLINIC:
IP/OP. NO.: PATIENT'S ADDRESS:request->getSession()->read('Auth.User.user_type') != 'Public Health Program') echo $sadr['patient_address'] ?>
DATE OF BIRTH:GENDER:
AGE GROUP: PREGNANCY STATUS:
ANY KNOWN ALLERGY:
WEIGHT (kg):
If yes specify: HEIGHT (cm):
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DIAGNOSIS:
REACTION:
+ " . $reaction['reaction'] . "
"; + endforeach; ?> + +
DATE OF ONSET OF REACTION:
BRIEF DESCRIPTION OF REACTION: + +
MEDICAL HISTORY:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ List all medicines being currently used by the patient including OTC, and herbal products (* Tick the suspected medicine) +
INN/GENERIC NAMEBRAND NAME *BATCH/ LOT NO.MANUFACTURERROUTE AND FREQUENCYDATE STARTEDDATE STOPPEDINDICATION + +
 
+ +
✓"; + } ?>
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Past medication history (List all medicines used in the last 3 months including OTC, herbals, if pregnant indicate medicines used in the 1st trimester) +
INN/GENERIC NAMEBRAND NAMEBATCH/ LOT NO.MANUFACTURERROUTE AND FREQUENCYDATE STARTEDDATE STOPPEDINDICATION
 
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Dechallenge/Rechallenge
+
+
Grading of the reaction /event
+
Did the reaction resolve after the drug was stopped or when the dose was reduced? Severity of reaction:
Did the reaction reappear after the drug was reintroduced? Is the reaction serious:
Any lab investigations and results: Criteria/reason for seriousness:
Outcome: Action taken:
+
+ + + + + + +
ANY OTHER COMMENT:
+
+ + 0) { ?> + + + + + + + + + + + + + + + +
#
+ +
+ + + request->getSession()->read('Auth.User.user_type') != 'Public Health Program') { + ?> + + + + + + + + + + + + + + + + + + + +
NAME OF PERSON REPORTING:E-MAIL ADDRESS:
DESIGNATION:PHONE NO.
Date:
+
+ + + + + +
Is the person submitting different from reporter?
+
+ + + + + + + + + + + + + + + + + + + +
NAME OF PERSON REPORTING:E-MAIL ADDRESS:
DESIGNATION:PHONE NO.
Date:
+
+ + +
+
+
+
\ No newline at end of file diff --git a/templates/Manager/Saefis/pdf/view.php b/templates/Manager/Saefis/pdf/view.php new file mode 100755 index 0000000000..e69de29bb2 diff --git a/templates/Reporter/Sadrs/pdf/view.php b/templates/Reporter/Sadrs/pdf/view.php index c5fb33820d..2504ca41ee 100755 --- a/templates/Reporter/Sadrs/pdf/view.php +++ b/templates/Reporter/Sadrs/pdf/view.php @@ -17,7 +17,7 @@
Html->image('coa.png', array('alt' => 'in confidence', 'style' => 'margin-left: 45%;', 'fullBase' => true, 'class' => 'pull-right'))); + // echo ($this->Html->image('coa.png', array('alt' => 'in confidence', 'style' => 'margin-left: 45%;', 'fullBase' => true, 'class' => 'pull-right'))); ?>

MINISTRY OF HEALTH

@@ -196,9 +196,9 @@ - -
+ if (!empty($sadrListOfDrug['dose_entity']['name'])) echo ' - ' . $sadrListOfDrug['dose_entity']['name']; ?> + +
@@ -240,9 +240,9 @@ - -
+ if (!empty($sadrListOfMedicine['dose_entity']['name'])) echo ' - ' . $sadrListOfMedicine['dose_entity']['name']; ?> + +
diff --git a/templates/element/sadr/sadr_edit.php b/templates/element/sadr/sadr_edit.php index 049097a3d2..2abfaf03f5 100755 --- a/templates/element/sadr/sadr_edit.php +++ b/templates/element/sadr/sadr_edit.php @@ -285,7 +285,7 @@ ]); - if (!empty($sadr->getErrors('has_age_or_dob'))) { + if (!empty($sadr->getErrors()['has_age_or_dob'])) { $error = $sadr->getErrors()['has_age_or_dob']['valid']; echo '
' . $error . '
'; // echo '
' . implode(', ', $sadr->getErrors('has_age_or_dob')) . '
'; @@ -575,6 +575,12 @@
element('multi/list_of_drugs'); + + if (!empty($sadr->getErrors()['sadr_list_of_drugs'])) { + $error = $sadr->getErrors()['sadr_list_of_drugs']['atLeastOneSuspectedDrug']; + echo '
' . $error . '
'; + // echo '
' . implode(', ', $sadr->getErrors('has_age_or_dob')) . '
'; + } ?> - -
+ if (!empty($sadrListOfDrug['doses_entity']['name'])) echo ' - ' . $sadrListOfDrug['doses_entity']['name']; ?> + +
diff --git a/webroot/css/bootstrap/bootstrap-responsive.css b/webroot/css/bootstrap/bootstrap-responsive.css old mode 100644 new mode 100755 diff --git a/webroot/css/bootstrap/bootstrap-responsive.min.css b/webroot/css/bootstrap/bootstrap-responsive.min.css old mode 100644 new mode 100755 diff --git a/webroot/css/bootstrap/bootstrap.css b/webroot/css/bootstrap/bootstrap.css old mode 100644 new mode 100755 diff --git a/webroot/css/bootstrap/bootstrap.min.cerulean.css b/webroot/css/bootstrap/bootstrap.min.cerulean.css old mode 100644 new mode 100755 diff --git a/webroot/css/bootstrap/bootstrap.min.css b/webroot/css/bootstrap/bootstrap.min.css old mode 100644 new mode 100755 diff --git a/webroot/css/bootstrap/bootstrap.min.old.css b/webroot/css/bootstrap/bootstrap.min.old.css old mode 100644 new mode 100755 diff --git a/webroot/js/bootstrap/bootstrap-affix.js b/webroot/js/bootstrap/bootstrap-affix.js old mode 100644 new mode 100755 diff --git a/webroot/js/bootstrap/bootstrap-alert.js b/webroot/js/bootstrap/bootstrap-alert.js old mode 100644 new mode 100755 diff --git a/webroot/js/bootstrap/bootstrap-button.js b/webroot/js/bootstrap/bootstrap-button.js old mode 100644 new mode 100755 diff --git a/webroot/js/bootstrap/bootstrap-carousel.js b/webroot/js/bootstrap/bootstrap-carousel.js old mode 100644 new mode 100755 diff --git a/webroot/js/bootstrap/bootstrap-collapse.js b/webroot/js/bootstrap/bootstrap-collapse.js old mode 100644 new mode 100755 diff --git a/webroot/js/bootstrap/bootstrap-dropdown.js b/webroot/js/bootstrap/bootstrap-dropdown.js old mode 100644 new mode 100755 diff --git a/webroot/js/bootstrap/bootstrap-modal.js b/webroot/js/bootstrap/bootstrap-modal.js old mode 100644 new mode 100755 diff --git a/webroot/js/bootstrap/bootstrap-popover.js b/webroot/js/bootstrap/bootstrap-popover.js old mode 100644 new mode 100755 diff --git a/webroot/js/bootstrap/bootstrap-scrollspy.js b/webroot/js/bootstrap/bootstrap-scrollspy.js old mode 100644 new mode 100755 diff --git a/webroot/js/bootstrap/bootstrap-tab.js b/webroot/js/bootstrap/bootstrap-tab.js old mode 100644 new mode 100755 diff --git a/webroot/js/bootstrap/bootstrap-tooltip.js b/webroot/js/bootstrap/bootstrap-tooltip.js old mode 100644 new mode 100755 diff --git a/webroot/js/bootstrap/bootstrap-transition.js b/webroot/js/bootstrap/bootstrap-transition.js old mode 100644 new mode 100755 diff --git a/webroot/js/bootstrap/bootstrap-typeahead.js b/webroot/js/bootstrap/bootstrap-typeahead.js old mode 100644 new mode 100755 diff --git a/webroot/js/bootstrap/bootstrap.js b/webroot/js/bootstrap/bootstrap.js old mode 100644 new mode 100755 diff --git a/webroot/js/bootstrap/bootstrap.min.js b/webroot/js/bootstrap/bootstrap.min.js old mode 100644 new mode 100755 diff --git a/webroot/js/bootstrap/html5shiv.js b/webroot/js/bootstrap/html5shiv.js old mode 100644 new mode 100755