Skip to content

Commit

Permalink
Merge pull request #2063 from ChurchCRM/2.6.1-Global-search-box-fixes
Browse files Browse the repository at this point in the history
cherry-pick #2061 for Master 2.6.1
  • Loading branch information
crossan007 authored Mar 11, 2017
2 parents bcb0e6d + 8a2a9b5 commit 1cf1788
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 39 deletions.
6 changes: 4 additions & 2 deletions src/Include/Header-function.php
Original file line number Diff line number Diff line change
Expand Up @@ -151,8 +151,10 @@ function Header_body_scripts()
}

$(document).ajaxError(function (evt, xhr, settings) {
var CRMResponse = JSON.parse(xhr.responseText);
window.CRM.DisplayErrorMessage(settings.url, CRMResponse);
try {
var CRMResponse = JSON.parse(xhr.responseText);
window.CRM.DisplayErrorMessage(settings.url, CRMResponse);
} catch(err) {}
});

function LimitTextSize(theTextArea, size) {
Expand Down
87 changes: 52 additions & 35 deletions src/api/routes/search.php
Original file line number Diff line number Diff line change
@@ -1,60 +1,77 @@
<?php
use ChurchCRM\dto\SystemURLs;
use ChurchCRM\DepositQuery;
use ChurchCRM\FamilyQuery;
use Propel\Runtime\ActiveQuery\Criteria;
use ChurchCRM\dto\SystemConfig;

// Routes search

// search for a string in Persons, families, groups, Financial Deposits and Payments
$app->get('/search/{query}', function ($request, $response, $args) {
$query = $args['query'];
$resultsArray = [];

//Person Search
try {
array_push($resultsArray, $this->PersonService->getPersonsJSON($this->PersonService->search($query)));
} catch (Exception $e) {
}

if ($_SESSION['bFinance']) {
try {
$q = ChurchCRM\FamilyQuery::create()
->filterByEnvelope($query)
->limit(5)
->withColumn('fam_Name', 'displayName')
->withColumn('CONCAT("'.SystemURLs::getRootPath().'FamilyView.php?FamilyID=",Family.Id)', 'uri')
->select(['displayName', 'uri'])
->find();
array_push($resultsArray, str_replace('Families', 'Donation Envelopes', $q->toJSON()));
} catch (Exception $ex) {
}

try {
array_push($resultsArray, $this->FamilyService->getFamiliesJSON($this->FamilyService->search($query)));
} catch (Exception $e) {
}
}

//Family Search
try {
array_push($resultsArray, $this->GroupService->getGroupJSON($this->GroupService->search($query)));
array_push($resultsArray, $this->FamilyService->getFamiliesJSON($this->FamilyService->search($query)));
} catch (Exception $e) {
}


//Group Search
try {
$q = \ChurchCRM\DepositQuery::create();
$q->filterByComment("%$query%", Propel\Runtime\ActiveQuery\Criteria::LIKE)
->_or()
->filterById($query)
->_or()
->usePledgeQuery()
->filterByCheckno("%$query%", Propel\Runtime\ActiveQuery\Criteria::LIKE)
->endUse()
->withColumn('CONCAT("#",Deposit.Id," ",Deposit.Comment)', 'displayName')
->withColumn('CONCAT("'.SystemURLs::getRootPath().'DepositSlipEditor.php?DepositSlipID=",Deposit.Id)', 'uri')
->limit(5);
array_push($resultsArray, $q->find()->toJSON());
array_push($resultsArray, $this->GroupService->getGroupJSON($this->GroupService->search($query)));
} catch (Exception $e) {
}

try {
array_push($resultsArray, $this->FinancialService->getPaymentJSON($this->FinancialService->searchPayments($query)));
} catch (Exception $e) {

//Deposits Search
if ($_SESSION['bFinance']) {

//Envelopes Search
if (SystemConfig::getValue('bUseDonationEnvelopes') && is_numeric($query)) {
try {
$q = FamilyQuery::create()
->filterByEnvelope($query)
->limit(5)
->withColumn('fam_Name', 'displayName')
->withColumn('CONCAT("' . SystemURLs::getRootPath() . 'FamilyView.php?FamilyID=",Family.Id)', 'uri')
->select(['displayName', 'uri'])
->find();
array_push($resultsArray, str_replace('Families', 'Donation Envelopes', $q->toJSON()));
} catch (Exception $ex) {
}
}


try {
$q = DepositQuery::create();
$q->filterByComment("%$query%", Criteria::LIKE)
->_or()
->filterById($query)
->_or()
->usePledgeQuery()
->filterByCheckno("%$query%", Criteria::LIKE)
->endUse()
->withColumn('CONCAT("#",Deposit.Id," ",Deposit.Comment)', 'displayName')
->withColumn('CONCAT("' . SystemURLs::getRootPath() . 'DepositSlipEditor.php?DepositSlipID=",Deposit.Id)', 'uri')
->limit(5);
array_push($resultsArray, $q->find()->toJSON());
} catch (Exception $e) {
}

//Search Payments
try {
array_push($resultsArray, $this->FinancialService->getPaymentJSON($this->FinancialService->searchPayments($query)));
} catch (Exception $e) {
}
}

$data = ['results' => array_filter($resultsArray)];
Expand Down
3 changes: 1 addition & 2 deletions src/skin/churchcrm.scss
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
// and we don't want to incur IE's CSS limits.
// ( http://spaceninja.com/2015/03/31/ie-css-limits/ )

@import 'adminlte/plugins/select2/select2.min.css';
@import 'adminlte/plugins/datepicker/datepicker3.css';
@import 'adminlte/plugins/daterangepicker/daterangepicker.css';
@import 'adminlte/plugins/timepicker/bootstrap-timepicker.min.css';
Expand All @@ -32,7 +31,7 @@

@import 'adminlte/dist/css/AdminLTE.min.css';
@import 'adminlte/dist/css/skins/_all-skins.min.css';

@import 'adminlte/plugins/select2/select2.min.css';
// Import ChurchCRM custom styles

@import 'scss/dropdowns';
Expand Down

0 comments on commit 1cf1788

Please sign in to comment.