updated system ref, organization for saimod mail, saimod mail contacts pagination & search

This commit is contained in:
Ulf Gebhardt 2019-01-21 15:33:16 +01:00
parent 1680d38142
commit 1adc54c06c
11 changed files with 95 additions and 12 deletions

View File

@ -1,5 +1,11 @@
function init_saimod_mail() {}
function register_search(){
$('#btn_search').click(function(){
system.load($(this).attr('state')+$('#input_search').val()+$(this).attr('state2'),true);
});
}
function init_saimod_mail_overview() {
$('#tabs_mail li a').each(function(){
$(this).removeClass('active');});
@ -133,6 +139,7 @@ function init_saimod_mail_contacts() {
});
}
});
register_search();
}
function init_saimod_mail_contact() {

View File

@ -378,27 +378,44 @@ class saimod_mail extends \SYSTEM\SAI\sai_module{
return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_overview.tpl'))->SERVERPATH(),$vars);
}
public static function sai_mod__SAI_saimod_mail_action_contacts($list=null){
public static function sai_mod__SAI_saimod_mail_action_contacts($search='%',$page=0,$list=null){
$vars = array();
$vars['list'] = $list;
$vars['search'] = $search;
$vars['page'] = $page;
//menu
$vars['menu'] = '';
$vars['active_all'] = $list ? '' : 'active';
$res = \SQL\EMAIL_LISTS_SELECT::QQ();
while($row = $res->next()){
$row['active'] = $row['id'] == $list ? 'active' : '';
$row['search'] = $search;
$vars['menu'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_contacts_menu.tpl'))->SERVERPATH(),$row);
}
//data
$vars['data'] = '';
if($list){
$res = \SQL\CONTACTS_SELECT_LIST::QQ(array($list));
$res = \SQL\CONTACTS_SELECT_LIST::QQ(array($list,$search,$search,$search,$search));
$count = \SQL\CONTACTS_COUNT_LIST::Q1(array($list,$search,$search,$search,$search))['count'];
} else {
$res = \SQL\CONTACTS_SELECT::QQ();
$res = \SQL\CONTACTS_SELECT::QQ(array($search,$search,$search,$search));
$count = \SQL\CONTACTS_COUNT::Q1(array($search,$search,$search,$search))['count'];
}
while($row = $res->next()){
$res->seek(25*$page);
$count_filtered = 0;
while(($row = $res->next()) && ($count_filtered < 25)){
$vars['data'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_contacts_tr.tpl'))->SERVERPATH(),$row);
$count_filtered++;
}
// Pagintation
$vars['pagination'] = '';
$vars['page_last'] = floor($count/25);
for($i=0;$i < ceil($count/25);$i++){
$data = array('page' => $i,'search' => $search, 'list' => $list, 'active' => ($i == $page) ? 'active' : '');
$vars['pagination'] .= \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_contacts_pagination.tpl'))->SERVERPATH(), $data);
}
$vars['count'] = ($count_filtered+$page*25).'/'.$count;
return \SYSTEM\PAGE\replace::replaceFile((new \PSAI('saimod_mail/tpl/saimod_mail_contacts.tpl'))->SERVERPATH(),$vars);
}

14
sql/CONTACTS_COUNT.php Normal file
View File

@ -0,0 +1,14 @@
<?php
namespace SQL;
class CONTACTS_COUNT extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(*) as `count` FROM contact WHERE
( contact.email LIKE ? OR
contact.name_first LIKE ? OR
contact.name_last LIKE ? OR
contact.organization LIKE ?
);';
}
}

View File

@ -0,0 +1,16 @@
<?php
namespace SQL;
class CONTACTS_COUNT_LIST extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT COUNT(*) as `count` FROM contact
LEFT JOIN contact_email_list ON contact.email = contact_email_list.email
WHERE list = ? AND
( contact.email LIKE ? OR
contact.name_first LIKE ? OR
contact.name_last LIKE ? OR
contact.organization LIKE ?
);';
}
}

View File

@ -1,9 +1,14 @@
<?php
namespace SQL;
class CONTACTS_SELECT extends \SYSTEM\DB\QQ {
class CONTACTS_SELECT extends \SYSTEM\DB\QP {
public static function get_class(){return \get_class();}
public static function mysql(){return
'SELECT * FROM contact;';
'SELECT * FROM contact
WHERE ( contact.email LIKE ? OR
contact.name_first LIKE ? OR
contact.name_last LIKE ? OR
contact.organization LIKE ?
);';
}
}

View File

@ -6,8 +6,11 @@ class CONTACTS_SELECT_LIST extends \SYSTEM\DB\QP {
public static function mysql(){return
'SELECT * FROM contact
LEFT JOIN contact_email_list ON contact.email = contact_email_list.email
WHERE list = ?;';
WHERE list = ? AND
( contact.email LIKE ? OR
contact.name_first LIKE ? OR
contact.name_last LIKE ? OR
contact.organization LIKE ?
);';
}
}

View File

@ -2,7 +2,9 @@ REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `na
-- REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9010, 42, 2, 9000, 'send', 'email', 'UINT0');
-- REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9011, 42, 2, 9000, 'send', 'list', 'UINT0');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9020, 42, 3, 9000, 'contacts', 'list', 'UINT0');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9020, 42, 3, 9000, 'contacts', 'search', 'STRING');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9021, 42, 3, 9000, 'contacts', 'page', 'UINT0');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9022, 42, 3, 9000, 'contacts', 'list', 'UINT0');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9030, 42, 2, 9000, 'contact', 'email', 'STRING');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9035, 42, 2, 9000, 'update_contact', 'data', 'JSON');
REPLACE INTO `system_api` (`ID`, `group`, `type`, `parentID`, `parentValue`, `name`, `verify`) VALUES (9037, 42, 2, 9000, 'insert_contact', 'data', 'JSON');

View File

@ -1,7 +1,7 @@
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (900, 42, 'mail', 'mail', -1, 0, 0, '#content', './sai.php?sai_mod=.SAI.saimod_mail', 'init_saimod_mail', '\\SAI\\saimod_mail');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (901, 42, 'overview', 'mail', 900, 0, 0, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=overview', 'init_saimod_mail_overview', '\\SAI\\saimod_mail');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (910, 42, 'contacts', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=contacts&list=${list}', 'init_saimod_mail_contacts', '\\SAI\\saimod_mail');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (910, 42, 'contacts', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=contacts&search=${search}&page=${page}&list=${list}', 'init_saimod_mail_contacts', '\\SAI\\saimod_mail');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (915, 42, 'contact', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=contact&email=${email}', 'init_saimod_mail_contact', '\\SAI\\saimod_mail');
REPLACE INTO `system_page` (`id`, `group`, `name`, `state`, `parent_id`, `login`, `type`, `div`, `url`, `func`, `php_class`) VALUES (917, 42, 'contact_new', 'mail', 900, 0, 1, '#content_mail', './sai.php?sai_mod=.SAI.saimod_mail&action=contact_new', 'init_saimod_mail_contact_new', '\\SAI\\saimod_mail');

View File

@ -19,7 +19,25 @@
<button type="button" id="btn-mail-contact-new" class="btn btn-sm btn-success pull-right" onclick="system.load('mail(contact_new)')" style="margin-right: 10px;"><i class="fa fa-plus"></i></button>
</th>
</tr>
<tr>
<th colspan="6">
<input class="input-medium search-query action-control" id="input_search" type="text" placeholder="Search" size="40" style="width: 100%;" value="${search}"/>
</th>
<th>
<button class="btn-sm btn btn-success" state="mail(contacts);search." state2=";page.0;list.${list}" id="btn_search" type="submit" style="width: 100%;"><span class="glyphicon glyphicon-search" aria-hidden="true"></span>Search</button>
</th>
</tr>
<tr>
<th colspan="7">
Rows: ${count} Page: ${page}
</th>
</tr>
</thead>
<tbody>${data}</tbody>
</table>
<ul class="pagination flex-wrap">
<li class="page-item"><a class="page-link" href="#!mail(contacts);list.${list};search.${search};page.0">&laquo;</a></li>
${pagination}
<li class="page-item"><a class="page-link" href="#!mail(contacts);list.${list};search.${search};page.${page_last}">&raquo;</a></li>
</ul>
</div>

View File

@ -1,3 +1,3 @@
<li class="nav-item">
<a class="nav-link ${active}" href="#!mail(contacts);list.${id}">${name}</a>
<a class="nav-link ${active}" href="#!mail(contacts);search.${search};page.0;list.${id}">${name}</a>
</li>

View File

@ -0,0 +1 @@
<li class="page-item ${active}"><a class="page-link" href="#!mail(contacts);list.${list};search.${search};page.${page}">${page}</a></li>