Initial commit
This commit is contained in:
92
app/plugins/contacts/controllers/contacts.php
Normal file
92
app/plugins/contacts/controllers/contacts.php
Normal file
@ -0,0 +1,92 @@
|
||||
<?php
|
||||
/**
|
||||
* app/plugins/contacts/controllers/contacts.php
|
||||
*
|
||||
* This is the contacts controller.
|
||||
*
|
||||
* @package TP Contacts
|
||||
* @version 3.0
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
*/
|
||||
namespace TheTempusProject\Controllers;
|
||||
|
||||
use TheTempusProject\Bedrock\Functions\Check;
|
||||
use TheTempusProject\Bedrock\Functions\Input;
|
||||
use TheTempusProject\Houdini\Classes\Issues;
|
||||
use TheTempusProject\Houdini\Classes\Views;
|
||||
use TheTempusProject\Classes\Forms;
|
||||
use TheTempusProject\Houdini\Classes\Forms as FormBuilder;
|
||||
use TheTempusProject\Houdini\Classes\Components;
|
||||
use TheTempusProject\Classes\Config;
|
||||
|
||||
|
||||
|
||||
use TheTempusProject\Classes\Controller;
|
||||
use TheTempusProject\TheTempusProject as App;
|
||||
use TheTempusProject\Bedrock\Functions\Session;
|
||||
use TheTempusProject\Hermes\Functions\Redirect;
|
||||
use TheTempusProject\Models\Contact;
|
||||
use TheTempusProject\Models\Phonebook;
|
||||
use TheTempusProject\Houdini\Classes\Template;
|
||||
use TheTempusProject\Houdini\Classes\Navigation;
|
||||
|
||||
class Contacts extends Controller {
|
||||
protected static $contacts;
|
||||
protected static $phonebooks;
|
||||
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
if ( !App::$isLoggedIn ) {
|
||||
Session::flash( 'notice', 'You must be logged in to use this feature.' );
|
||||
return Redirect::home();
|
||||
}
|
||||
self::$contacts = new Contact;
|
||||
self::$phonebooks = new Phonebook;
|
||||
self::$title = 'Contacts - {SITENAME}';
|
||||
self::$pageDescription = 'On this page you can create and manage contacts and phonebooks.';
|
||||
}
|
||||
|
||||
public function index() {
|
||||
$phonebooks = Views::simpleView( 'contacts.phonebooks.list', self::$phonebooks->byUser() );
|
||||
Components::set( 'phonebookList', $phonebooks );
|
||||
|
||||
$contacts = Views::simpleView( 'contacts.contacts.list', self::$contacts->byUser() );
|
||||
Components::set( 'contactList', $contacts );
|
||||
|
||||
Views::view( 'contacts.dashboard' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Contacts
|
||||
*/
|
||||
public function viewContact( $id = null ) {
|
||||
// stuff here
|
||||
}
|
||||
public function createContact( $id = null ) {
|
||||
// stuff here
|
||||
}
|
||||
public function editContact( $id = null ) {
|
||||
// stuff here
|
||||
}
|
||||
public function deleteContact( $id = null ) {
|
||||
// stuff here
|
||||
}
|
||||
|
||||
/**
|
||||
* Phonebooks
|
||||
*/
|
||||
public function viewPhonebook( $id = null ) {
|
||||
// stuff here
|
||||
}
|
||||
public function createPhonebook() {
|
||||
// stuff here
|
||||
}
|
||||
public function editPhonebook( $id = null ) {
|
||||
// stuff here
|
||||
}
|
||||
public function deletePhonebook( $id = null ) {
|
||||
// stuff here
|
||||
}
|
||||
}
|
99
app/plugins/contacts/forms.php
Normal file
99
app/plugins/contacts/forms.php
Normal file
@ -0,0 +1,99 @@
|
||||
<?php
|
||||
/**
|
||||
* app/plugins/notes/forms.php
|
||||
*
|
||||
* This houses all of the form checking functions for this plugin.
|
||||
*
|
||||
* @package TP Notes
|
||||
* @version 3.0
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
*/
|
||||
namespace TheTempusProject\Plugins\Notes;
|
||||
|
||||
use TheTempusProject\Bedrock\Functions\Input;
|
||||
use TheTempusProject\Bedrock\Functions\Check;
|
||||
use TheTempusProject\Classes\Forms;
|
||||
|
||||
class ContactsForms extends Forms {
|
||||
/**
|
||||
* Adds these functions to the form list.
|
||||
*/
|
||||
public function __construct() {
|
||||
self::addHandler( 'createContact', __CLASS__, 'createContact' );
|
||||
self::addHandler( 'createPhonebook', __CLASS__, 'createPhonebook' );
|
||||
self::addHandler( 'editContact', __CLASS__, 'editContact' );
|
||||
self::addHandler( 'editPhonebook', __CLASS__, 'editPhonebook' );
|
||||
}
|
||||
|
||||
public static function createContact() {
|
||||
if ( ! Input::exists( 'submit' ) ) {
|
||||
return false;
|
||||
}
|
||||
if ( ! Input::exists( 'first_name' ) && ! Input::exists( 'last_name' ) && ! Input::exists( 'nickname' ) ) {
|
||||
Check::addUserError( 'You must include a first, last, or nick-name.' );
|
||||
return false;
|
||||
}
|
||||
// if ( !self::token() ) {
|
||||
// Check::addUserError( 'token - comment out later.' );
|
||||
// return false;
|
||||
// }
|
||||
return true;
|
||||
}
|
||||
|
||||
public static function createPhonebook() {
|
||||
if ( ! Input::exists( 'submit' ) ) {
|
||||
return false;
|
||||
}
|
||||
if ( ! Input::exists( 'title' ) ) {
|
||||
Check::addUserError( 'You must include a title.' );
|
||||
return false;
|
||||
}
|
||||
if ( ! Input::exists( 'color' ) ) {
|
||||
Check::addUserError( 'You must include a color.' );
|
||||
return false;
|
||||
}
|
||||
// if ( ! self::token() ) {
|
||||
// Check::addUserError( 'token - comment out later.' );
|
||||
// return false;
|
||||
// }
|
||||
return true;
|
||||
}
|
||||
|
||||
public static function editContact() {
|
||||
if ( ! Input::exists( 'submit' ) ) {
|
||||
return false;
|
||||
}
|
||||
if ( ! Input::exists( 'first_name' ) && ! Input::exists( 'last_name' ) && ! Input::exists( 'nickname' ) ) {
|
||||
Check::addUserError( 'You must include a first, last, or nick-name.' );
|
||||
return false;
|
||||
}
|
||||
// if ( !self::token() ) {
|
||||
// Check::addUserError( 'token - comment out later.' );
|
||||
// return false;
|
||||
// }
|
||||
return true;
|
||||
}
|
||||
|
||||
public static function editPhonebook() {
|
||||
if ( ! Input::exists( 'submit' ) ) {
|
||||
return false;
|
||||
}
|
||||
if ( ! Input::exists( 'title' ) ) {
|
||||
Check::addUserError( 'You must include a title.' );
|
||||
return false;
|
||||
}
|
||||
if ( ! Input::exists( 'color' ) ) {
|
||||
Check::addUserError( 'You must include a color.' );
|
||||
return false;
|
||||
}
|
||||
// if ( !self::token() ) {
|
||||
// Check::addUserError( 'token - comment out later.' );
|
||||
// return false;
|
||||
// }
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
new ContactsForms;
|
88
app/plugins/contacts/models/contact.php
Normal file
88
app/plugins/contacts/models/contact.php
Normal file
@ -0,0 +1,88 @@
|
||||
<?php
|
||||
/**
|
||||
* app/plugins/contacts/models/contact.php
|
||||
*
|
||||
* This class is used for the manipulation of the contacts database table.
|
||||
*
|
||||
* @package TP Contacts
|
||||
* @version 3.0
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
*/
|
||||
namespace TheTempusProject\Models;
|
||||
|
||||
use TheTempusProject\Canary\Canary as Debug;
|
||||
use TheTempusProject\Classes\DatabaseModel;
|
||||
use TheTempusProject\TheTempusProject as App;
|
||||
|
||||
class Contact extends DatabaseModel {
|
||||
public $tableName = 'contacts';
|
||||
|
||||
public $databaseMatrix = [
|
||||
[ 'avatar', 'text', ''],
|
||||
[ 'first_name', 'varchar', '128'],
|
||||
[ 'middle_name', 'varchar', '128'],
|
||||
[ 'last_name', 'varchar', '128'],
|
||||
[ 'nickname', 'varchar', '128'],
|
||||
[ 'company', 'varchar', '128'],
|
||||
[ 'job_title', 'varchar', '128'],
|
||||
[ 'email', 'varchar', '128'],
|
||||
[ 'email_2', 'varchar', '128'],
|
||||
[ 'phone', 'varchar', '128'],
|
||||
[ 'phone_2', 'varchar', '128'],
|
||||
[ 'address_1_primary', 'varchar', '128'],
|
||||
[ 'address_1_secondary', 'varchar', '128'],
|
||||
[ 'city', 'varchar', '128'],
|
||||
[ 'state', 'varchar', '128'],
|
||||
[ 'zipcode', 'varchar', '128'],
|
||||
[ 'country', 'varchar', '128'],
|
||||
[ 'address_2_primary', 'varchar', '128'],
|
||||
[ 'address_2_secondary', 'varchar', '128'],
|
||||
[ 'city_2', 'varchar', '128'],
|
||||
[ 'state_2', 'varchar', '128'],
|
||||
[ 'zipcode_2', 'varchar', '128'],
|
||||
[ 'country_2', 'varchar', '128'],
|
||||
[ 'notes', 'text', ''],
|
||||
[ 'color', 'varchar', '48' ],
|
||||
[ 'icon', 'varchar', '48' ],
|
||||
[ 'createdAt', 'int', '11'],
|
||||
[ 'createdBy', 'int', '11'],
|
||||
[ 'phonebookID', 'int', '11'],
|
||||
];
|
||||
|
||||
/**
|
||||
* The model constructor.
|
||||
*/
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
public function byUser( $limit = null ) {
|
||||
$whereClause = [ 'createdBy', '=', App::$activeUser->ID ];
|
||||
if ( empty( $limit ) ) {
|
||||
$phonebooks = self::$db->get( $this->tableName, $whereClause );
|
||||
} else {
|
||||
$phonebooks = self::$db->get( $this->tableName, $whereClause, 'ID', 'DESC', [0, $limit] );
|
||||
}
|
||||
if ( !$phonebooks->count() ) {
|
||||
Debug::info( 'No Phonebooks found.' );
|
||||
return false;
|
||||
}
|
||||
return $this->filter( $phonebooks->results() );
|
||||
}
|
||||
|
||||
public function byPhonebook( $phonebookID, $limit = null ) {
|
||||
$whereClause = [ 'phonebookID', '=', $phonebookID ];
|
||||
if ( empty( $limit ) ) {
|
||||
$phonebooks = self::$db->get( $this->tableName, $whereClause );
|
||||
} else {
|
||||
$phonebooks = self::$db->get( $this->tableName, $whereClause, 'ID', 'DESC', [0, $limit] );
|
||||
}
|
||||
if ( !$phonebooks->count() ) {
|
||||
Debug::info( 'No Phonebooks found.' );
|
||||
return false;
|
||||
}
|
||||
return $this->filter( $phonebooks->results() );
|
||||
}
|
||||
}
|
165
app/plugins/contacts/models/phonebook.php
Normal file
165
app/plugins/contacts/models/phonebook.php
Normal file
@ -0,0 +1,165 @@
|
||||
<?php
|
||||
/**
|
||||
* app/plugins/contacts/models/phonebook.php
|
||||
*
|
||||
* This class is used for the manipulation of the phonebook database table.
|
||||
*
|
||||
* @package TP Contacts
|
||||
* @version 3.0
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
*/
|
||||
namespace TheTempusProject\Models;
|
||||
|
||||
use TheTempusProject\Bedrock\Classes\Config;
|
||||
use TheTempusProject\Bedrock\Functions\Check;
|
||||
use TheTempusProject\Canary\Canary as Debug;
|
||||
use TheTempusProject\Classes\DatabaseModel;
|
||||
use TheTempusProject\TheTempusProject as App;
|
||||
use TheTempusProject\Houdini\Classes\Filters;
|
||||
use TheTempusProject\Bedrock\Classes\CustomException;
|
||||
|
||||
class Phonebook extends DatabaseModel {
|
||||
public $tableName = 'phonebooks';
|
||||
|
||||
public $databaseMatrix = [
|
||||
[ 'title', 'varchar', '128' ],
|
||||
[ 'description', 'text', '' ],
|
||||
[ 'color', 'varchar', '48' ],
|
||||
[ 'icon', 'varchar', '48' ],
|
||||
[ 'createdBy', 'int', '11' ],
|
||||
[ 'createdAt', 'int', '11' ],
|
||||
];
|
||||
|
||||
/**
|
||||
* The model constructor.
|
||||
*/
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
public function create( $title, $description = '', $color = 'default', $icon = '' ) {
|
||||
if ( ! Check::dataTitle( $title ) ) {
|
||||
Debug::info( 'Phonebooks: illegal title.' );
|
||||
return false;
|
||||
}
|
||||
$fields = [
|
||||
'title' => $title,
|
||||
'description' => $description,
|
||||
'color' => $color,
|
||||
'icon' => $icon,
|
||||
'createdBy' => App::$activeUser->ID,
|
||||
'createdAt' => time(),
|
||||
];
|
||||
if ( ! self::$db->insert( $this->tableName, $fields ) ) {
|
||||
new CustomException( 'phonebookCreate' );
|
||||
Debug::error( "Phonebooks: not created " . var_export($fields,true) );
|
||||
return false;
|
||||
}
|
||||
return self::$db->lastId();
|
||||
}
|
||||
|
||||
public function update( $id, $title, $description = '', $color = 'default', $icon = '' ) {
|
||||
if ( !Check::id( $id ) ) {
|
||||
Debug::info( 'Phonebooks: illegal ID.' );
|
||||
return false;
|
||||
}
|
||||
if ( !Check::dataTitle( $title ) ) {
|
||||
Debug::info( 'Phonebooks: illegal title.' );
|
||||
return false;
|
||||
}
|
||||
$fields = [
|
||||
'title' => $title,
|
||||
'description' => $description,
|
||||
'color' => $color,
|
||||
'icon' => $icon,
|
||||
];
|
||||
if ( !self::$db->update( $this->tableName, $id, $fields ) ) {
|
||||
new CustomException( 'phonebookUpdate' );
|
||||
Debug::error( "Phonebooks: $id not updated" );
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function byUser( $limit = null ) {
|
||||
$whereClause = ['createdBy', '=', App::$activeUser->ID];
|
||||
if ( empty( $limit ) ) {
|
||||
$phonebooks = self::$db->get( $this->tableName, $whereClause );
|
||||
} else {
|
||||
$phonebooks = self::$db->get( $this->tableName, $whereClause, 'ID', 'DESC', [0, $limit] );
|
||||
}
|
||||
if ( !$phonebooks->count() ) {
|
||||
Debug::info( 'No Phonebooks found.' );
|
||||
return false;
|
||||
}
|
||||
return $this->filter( $phonebooks->results() );
|
||||
}
|
||||
|
||||
public function getName( $id ) {
|
||||
$phonebook = self::findById( $id );
|
||||
return $phonebook->title;
|
||||
}
|
||||
|
||||
public function simpleList( $param = '') {
|
||||
$whereClause = ['createdBy', '=', App::$activeUser->ID];
|
||||
$phonebooks = self::$db->get( $this->tableName, $whereClause );
|
||||
if ( !$phonebooks->count() ) {
|
||||
Debug::warn( 'Could not find any Phonebooks' );
|
||||
return [];
|
||||
}
|
||||
|
||||
$phonebooks = $phonebooks->results();
|
||||
$out = [ 'None' => '0'];
|
||||
foreach ( $phonebooks as &$phonebook ) {
|
||||
$out[ $phonebook->title ] = $phonebook->ID;
|
||||
}
|
||||
return $out;
|
||||
}
|
||||
|
||||
public function simpleObjectByUser() {
|
||||
$whereClause = ['createdBy', '=', App::$activeUser->ID];
|
||||
$phonebooks = self::$db->get( $this->tableName, $whereClause );
|
||||
if ( !$phonebooks->count() ) {
|
||||
Debug::warn( 'Could not find any Phonebooks' );
|
||||
return false;
|
||||
}
|
||||
|
||||
$phonebooks = $phonebooks->results();
|
||||
$out = [];
|
||||
foreach ( $phonebooks as &$phonebook ) {
|
||||
$obj = new \stdClass();
|
||||
$obj->title = $phonebook->title;
|
||||
$obj->ID = $phonebook->ID;
|
||||
$out[] = $obj;
|
||||
}
|
||||
return $out;
|
||||
}
|
||||
|
||||
public function getTree() {
|
||||
$whereClause = ['createdBy', '=', App::$activeUser->ID];
|
||||
$phonebooks = self::$db->get( $this->tableName, $whereClause );
|
||||
if ( !$phonebooks->count() ) {
|
||||
Debug::warn( 'Could not find any Phonebooks' );
|
||||
return [];
|
||||
}
|
||||
|
||||
$phonebooks = $phonebooks->results();
|
||||
$formattedPhonebooks = [];
|
||||
foreach ($phonebooks as $phonebook) {
|
||||
if ( !empty($phonebook->phonebookID) ) {
|
||||
$phonebookID = $phonebook->phonebookID;
|
||||
if ( ! isset( $formattedPhonebooks[ $phonebookID ])) {
|
||||
$formattedPhonebooks[ $phonebookID ][ 'phonebooks' ] = [];
|
||||
}
|
||||
$formattedPhonebooks[ $phonebookID ][ 'phonebooks' ][] = $phonebook;
|
||||
} else {
|
||||
$phonebookID = $phonebook->ID;
|
||||
$formattedPhonebooks[ $phonebookID ][ 'phonebook' ] = $phonebook;
|
||||
}
|
||||
}
|
||||
return $formattedPhonebooks;
|
||||
}
|
||||
|
||||
}
|
57
app/plugins/contacts/plugin.php
Normal file
57
app/plugins/contacts/plugin.php
Normal file
@ -0,0 +1,57 @@
|
||||
<?php
|
||||
/**
|
||||
* app/plugins/contacts/plugin.php
|
||||
*
|
||||
* This houses all of the main plugin info and functionality.
|
||||
*
|
||||
* @package TP Contacts
|
||||
* @version 3.0
|
||||
* @author Joey Kimsey <Joey@thetempusproject.com>
|
||||
* @link https://TheTempusProject.com
|
||||
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
|
||||
*/
|
||||
namespace TheTempusProject\Plugins;
|
||||
|
||||
use TheTempusProject\Classes\Plugin;
|
||||
use TheTempusProject\Models\Contact;
|
||||
use TheTempusProject\Models\Phonebook;
|
||||
use TheTempusProject\Houdini\Classes\Components;
|
||||
use TheTempusProject\Houdini\Classes\Template;
|
||||
|
||||
class Contacts extends Plugin {
|
||||
public $pluginName = 'TP Contacts';
|
||||
public $configName = 'contacts';
|
||||
public $pluginAuthor = 'JoeyK';
|
||||
public $pluginWebsite = 'https://TheTempusProject.com';
|
||||
public $modelVersion = '1.0';
|
||||
public $pluginVersion = '3.0';
|
||||
public $pluginDescription = 'A simple plugin which adds a site wide contacts system.';
|
||||
public $permissionMatrix = [
|
||||
'useContacts' => [
|
||||
'pretty' => 'Can use the contacts feature',
|
||||
'default' => false,
|
||||
],
|
||||
];
|
||||
public $main_links = [
|
||||
[
|
||||
'text' => 'Contacts',
|
||||
'url' => '{ROOT_URL}contacts/index/',
|
||||
'filter' => 'loggedin',
|
||||
],
|
||||
];
|
||||
public $configMatrix = [
|
||||
'enabled' => [
|
||||
'type' => 'radio',
|
||||
'pretty' => 'Enable Contacts.',
|
||||
'default' => true,
|
||||
],
|
||||
];
|
||||
// public $contacts;
|
||||
// public $phonebooks;
|
||||
|
||||
public function __construct( $load = false ) {
|
||||
// $this->contacts = new Contact;
|
||||
// $this->phonebooks = new Phonebook;
|
||||
parent::__construct( $load );
|
||||
}
|
||||
}
|
162
app/plugins/contacts/views/contacts/create.html
Normal file
162
app/plugins/contacts/views/contacts/create.html
Normal file
@ -0,0 +1,162 @@
|
||||
<legend>New Contact</legend>
|
||||
<form action="" method="post" class="form-horizontal">
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
<fieldset>
|
||||
<!-- Name -->
|
||||
<div class="form-group">
|
||||
<label for="avatar" class="col-lg-3 control-label">Avatar:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="avatar" id="avatar">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="first_name" class="col-lg-3 control-label">First Name:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="first_name" id="first_name">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="middle_name" class="col-lg-3 control-label">Middle Name:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="middle_name" id="middle_name">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="last_name" class="col-lg-3 control-label">Last Name:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="last_name" id="last_name">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="nickname" class="col-lg-3 control-label">Nickname:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="nickname" id="nickname">
|
||||
</div>
|
||||
</div>
|
||||
<!-- Work -->
|
||||
<div class="form-group">
|
||||
<label for="company" class="col-lg-3 control-label">Company:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="company" id="company">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="job_title" class="col-lg-3 control-label">Job Title:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="job_title" id="job_title">
|
||||
</div>
|
||||
</div>
|
||||
<!-- Email -->
|
||||
<div class="form-group">
|
||||
<label for="email" class="col-lg-3 control-label">Email:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="email" id="email">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="email_2" class="col-lg-3 control-label">Secondary Email:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="email_2" id="email_2">
|
||||
</div>
|
||||
</div>
|
||||
<!-- Phone -->
|
||||
<div class="form-group">
|
||||
<label for="phone" class="col-lg-3 control-label">Phone:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="phone" id="phone">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="phone_2" class="col-lg-3 control-label">Secondary Phone:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="phone_2" id="phone_2">
|
||||
</div>
|
||||
</div>
|
||||
<!-- Addresses -->
|
||||
<div class="form-group">
|
||||
<label for="address_1_primary" class="col-lg-3 control-label">Address Line 1:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="address_1_primary" id="address_1_primary">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="address_1_secondary" class="col-lg-3 control-label">Address Line 2:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="address_1_secondary" id="address_1_secondary">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="city" class="col-lg-3 control-label">City:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="city" id="city">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="state" class="col-lg-3 control-label">State:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="state" id="state">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="zipcode" class="col-lg-3 control-label">Zipcode:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="zipcode" id="zipcode">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="country" class="col-lg-3 control-label">Country:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="country" id="country">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="address_2_primary" class="col-lg-3 control-label">Address Line 1:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="address_2_primary" id="address_2_primary">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="address_2_secondary" class="col-lg-3 control-label">Address Line 2:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="address_2_secondary" id="address_2_secondary">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="city_2" class="col-lg-3 control-label">City:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="city_2" id="city_2">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="state_2" class="col-lg-3 control-label">State:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="state_2" id="state_2">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="zipcode_2" class="col-lg-3 control-label">Zipcode:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="zipcode_2" id="zipcode_2">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="country_2" class="col-lg-3 control-label">Country:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="country_2" id="country_2">
|
||||
</div>
|
||||
</div>
|
||||
<!-- Misc -->
|
||||
<div class="form-group">
|
||||
<label for="notes" class="col-lg-3 control-label">Notes:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="notes" id="notes">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="submit" class="col-lg-3 control-label"></label>
|
||||
<div class="col-lg-3">
|
||||
<button name="submit" value="submit" type="submit" class="btn btn-lg btn-primary center-block">Create</button><br>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
162
app/plugins/contacts/views/contacts/edit.html
Normal file
162
app/plugins/contacts/views/contacts/edit.html
Normal file
@ -0,0 +1,162 @@
|
||||
<legend>Edit Contact</legend>
|
||||
<form action="" method="post" class="form-horizontal">
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
<fieldset>
|
||||
<!-- Name -->
|
||||
<div class="form-group">
|
||||
<label for="avatar" class="col-lg-3 control-label">Avatar:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="avatar" id="avatar" value="{avatar}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="first_name" class="col-lg-3 control-label">First Name:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="first_name" id="first_name" value="{first_name}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="middle_name" class="col-lg-3 control-label">Middle Name:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="middle_name" id="middle_name" value="{middle_name}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="last_name" class="col-lg-3 control-label">Last Name:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="last_name" id="last_name" value="{last_name}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="nickname" class="col-lg-3 control-label">Nickname:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="nickname" id="nickname" value="{nickname}">
|
||||
</div>
|
||||
</div>
|
||||
<!-- Work -->
|
||||
<div class="form-group">
|
||||
<label for="company" class="col-lg-3 control-label">Company:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="company" id="company" value="{company}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="job_title" class="col-lg-3 control-label">Job Title:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="job_title" id="job_title" value="{job_title}">
|
||||
</div>
|
||||
</div>
|
||||
<!-- Email -->
|
||||
<div class="form-group">
|
||||
<label for="email" class="col-lg-3 control-label">Email:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="email" id="email" value="{email}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="email_2" class="col-lg-3 control-label">Secondary Email:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="email_2" id="email_2" value="{email_2}">
|
||||
</div>
|
||||
</div>
|
||||
<!-- Phone -->
|
||||
<div class="form-group">
|
||||
<label for="phone" class="col-lg-3 control-label">Phone:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="phone" id="phone" value="{phone}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="phone_2" class="col-lg-3 control-label">Secondary Phone:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="phone_2" id="phone_2" value="{phone_2}">
|
||||
</div>
|
||||
</div>
|
||||
<!-- Addresses -->
|
||||
<div class="form-group">
|
||||
<label for="address_1_primary" class="col-lg-3 control-label">Address Line 1:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="address_1_primary" id="address_1_primary" value="{address_1_primary}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="address_1_secondary" class="col-lg-3 control-label">Address Line 2:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="address_1_secondary" id="address_1_secondary" value="{address_1_secondary}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="city" class="col-lg-3 control-label">City:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="city" id="city" value="{city}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="state" class="col-lg-3 control-label">State:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="state" id="state" value="{state}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="zipcode" class="col-lg-3 control-label">Zipcode:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="zipcode" id="zipcode" value="{zipcode}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="country" class="col-lg-3 control-label">Country:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="country" id="country" value="{country}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="address_2_primary" class="col-lg-3 control-label">Address Line 1:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="address_2_primary" id="address_2_primary" value="{address_2_primary}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="address_2_secondary" class="col-lg-3 control-label">Address Line 2:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="address_2_secondary" id="address_2_secondary" value="{address_2_secondary}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="city_2" class="col-lg-3 control-label">City:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="city_2" id="city_2" value="{city_2}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="state_2" class="col-lg-3 control-label">State:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="state_2" id="state_2" value="{state_2}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="zipcode_2" class="col-lg-3 control-label">Zipcode:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="zipcode_2" id="zipcode_2" value="{zipcode_2}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="country_2" class="col-lg-3 control-label">Country:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="country_2" id="country_2" value="{country_2}">
|
||||
</div>
|
||||
</div>
|
||||
<!-- Misc -->
|
||||
<div class="form-group">
|
||||
<label for="notes" class="col-lg-3 control-label">Notes:</label>
|
||||
<div class="col-lg-3">
|
||||
<input class="form-control" type="text" name="notes" id="notes" value="{notes}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="submit" class="col-lg-3 control-label"></label>
|
||||
<div class="col-lg-3">
|
||||
<button name="submit" value="submit" type="submit" class="btn btn-lg btn-primary center-block">Create</button><br>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
40
app/plugins/contacts/views/contacts/list.html
Normal file
40
app/plugins/contacts/views/contacts/list.html
Normal file
@ -0,0 +1,40 @@
|
||||
<div class="row" style="margin-top: 30px; margin-bottom: 50px;">
|
||||
<form action="" method="post">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 5%">ID</th>
|
||||
<th style="width: 15%">Nickname</th>
|
||||
<th style="width: 20%">First Name</th>
|
||||
<th style="width: 20%">Last Name</th>
|
||||
<th style="width: 15%">Email</th>
|
||||
<th style="width: 15%">Phone</th>
|
||||
<th style="width: 5%"></th>
|
||||
<th style="width: 5%"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{LOOP}
|
||||
<tr>
|
||||
<td><a href='{ROOT_URL}contacts/viewContact/{ID}'>{ID}</a></td>
|
||||
<td>{nickname}</td>
|
||||
<td>{first_name}</td>
|
||||
<td>{last_name}</td>
|
||||
<td>{email}</td>
|
||||
<td>{phone}</td>
|
||||
<td><a href="{ROOT_URL}contacts/editContact/{ID}" class="btn btn-sm btn-warning" role="button"><i class="glyphicon glyphicon-edit"></i></a></td>
|
||||
<td><a href="{ROOT_URL}contacts/deleteContact/{ID}" class="btn btn-sm btn-danger" role="button"><i class="glyphicon glyphicon-trash"></i></a></td>
|
||||
</tr>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<tr>
|
||||
<td colspan="7">
|
||||
No Contacts
|
||||
</td>
|
||||
</tr>
|
||||
{/ALT}
|
||||
</tbody>
|
||||
</table>
|
||||
<a href="{ROOT_URL}contacts/createContact" class="btn btn-sm btn-primary" role="button">Add Contact</a>
|
||||
</form>
|
||||
</div>
|
87
app/plugins/contacts/views/contacts/view.html
Normal file
87
app/plugins/contacts/views/contacts/view.html
Normal file
@ -0,0 +1,87 @@
|
||||
<div class="container col-md-4 col-lg-4">
|
||||
<div class="row">
|
||||
<div class="panel panel-{color}">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">Contact</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="">
|
||||
<table class="table table-user-primary">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="left" width="200"><b>First Name</b></td>
|
||||
<td align="right">{first_name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left" width="200"><b>Middle Name</b></td>
|
||||
<td align="right">{middle_name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left" width="200"><b>Last Name</b></td>
|
||||
<td align="right">{last_name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left" width="200"><b>Nickname</b></td>
|
||||
<td align="right">{nickname}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left" width="200"><b>Company</b></td>
|
||||
<td align="right">{company}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left" width="200"><b>Job Title</b></td>
|
||||
<td align="right">{job_title}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left" width="200"><b>Email</b></td>
|
||||
<td align="right">
|
||||
{email}<br />
|
||||
{email_2}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left" width="200"><b>Phone</b></td>
|
||||
<td align="right">
|
||||
{phone}<br />
|
||||
{phone_2}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left" width="200"><b>Address 1</b></td>
|
||||
<td align="right">
|
||||
{address_1_primary}<br />
|
||||
{address_1_secondary}<br />
|
||||
{city} {state} {country} {zipcode}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left" width="200"><b>Address 2</b></td>
|
||||
<td align="right">
|
||||
{address_2_primary}<br />
|
||||
{address_2_secondary}<br />
|
||||
{city_2} {state_2} {country_2} {zipcode_2}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" colspan="2"><b>Notes</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">{notes}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Created</b></td>
|
||||
<td align="right">{DTC}{createdAt}{/DTC}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-footer">
|
||||
<a href="{ROOT_URL}contacts/editContact/{ID}" class="btn btn-sm btn-warning" role="button"><i class="glyphicon glyphicon-edit"></i></a>
|
||||
<a href="{ROOT_URL}contacts/deleteContact/{ID}" class="btn btn-sm btn-danger" role="button"><i class="glyphicon glyphicon-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
3
app/plugins/contacts/views/dashboard.html
Normal file
3
app/plugins/contacts/views/dashboard.html
Normal file
@ -0,0 +1,3 @@
|
||||
<legend>Contacts</legend>
|
||||
{phonebookList}
|
||||
{contactList}
|
35
app/plugins/contacts/views/phonebooks/create.html
Normal file
35
app/plugins/contacts/views/phonebooks/create.html
Normal file
@ -0,0 +1,35 @@
|
||||
<legend>Create Phonebook</legend>
|
||||
<form action="" method="post" class="form-horizontal">
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
<div class="form-group">
|
||||
<label for="title" class="col-lg-3 control-label">Title</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="text" class="form-control" name="title" id="title">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="description" class="col-lg-3 control-label">Description</label>
|
||||
<div class="col-lg-3">
|
||||
<textarea class="form-control" name="description" maxlength="2000" rows="10" cols="50" id="description"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="color" class="col-lg-3 control-label">Color</label>
|
||||
<div class="col-lg-3 select-container" id="colorContainer">
|
||||
{colorSelect}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="dropdown" class="col-lg-3 control-label">Icon</label>
|
||||
<div class="dropdow col-lg-3">
|
||||
{iconSelect}
|
||||
</div>
|
||||
<input type="hidden" id="iconValue" name="icon" value="">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="submit" class="col-lg-3 control-label"></label>
|
||||
<div class="col-lg-3">
|
||||
<button name="submit" value="submit" type="submit" class="btn btn-lg btn-primary center-block ">Submit</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
33
app/plugins/contacts/views/phonebooks/edit.html
Normal file
33
app/plugins/contacts/views/phonebooks/edit.html
Normal file
@ -0,0 +1,33 @@
|
||||
<form action="" method="post" class="form-horizontal">
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
<div class="form-group">
|
||||
<label for="title" class="col-lg-3 control-label">Title</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="text" class="form-control" name="title" id="title" value="{title}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="description" class="col-lg-3 control-label">Description</label>
|
||||
<div class="col-lg-3">
|
||||
<textarea class="form-control" name="description" maxlength="2000" rows="10" cols="50" id="description">{description}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="color" class="col-lg-3 control-label">Color</label>
|
||||
<div class="col-lg-3 select-container" id="colorContainer">
|
||||
{colorSelect}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="dropdown" class="col-lg-3 control-label">Icon</label>
|
||||
<div class="dropdow col-lg-3">
|
||||
{iconSelect}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="submit" class="col-lg-3 control-label"></label>
|
||||
<div class="col-lg-3">
|
||||
<button name="submit" value="submit" type="submit" class="btn btn-lg btn-primary center-block ">Submit</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
33
app/plugins/contacts/views/phonebooks/list.html
Normal file
33
app/plugins/contacts/views/phonebooks/list.html
Normal file
@ -0,0 +1,33 @@
|
||||
<div class="row" style="margin-top: 30px; margin-bottom: 50px;">
|
||||
<form action="" method="post">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 55%">Title</th>
|
||||
<th style="width: 35%">Description</th>
|
||||
<th style="width: 5%"></th>
|
||||
<th style="width: 5%"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{LOOP}
|
||||
<tr>
|
||||
<td><a href='{ROOT_URL}contacts/viewPhonebook/{ID}'>{title}</a></td>
|
||||
<td>{description}</td>
|
||||
<td><a href="{ROOT_URL}contacts/editPhonebook/{ID}" class="btn btn-sm btn-warning" role="button"><i class="glyphicon glyphicon-edit"></i></a></td>
|
||||
<td><a href="{ROOT_URL}contacts/deletePhonebook/{ID}" class="btn btn-sm btn-danger" role="button"><i class="glyphicon glyphicon-trash"></i></a></td>
|
||||
</tr>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<tr>
|
||||
<td colspan="7">
|
||||
No Phonebooks
|
||||
</td>
|
||||
</tr>
|
||||
{/ALT}
|
||||
</tbody>
|
||||
</table>
|
||||
<a href="{ROOT_URL}contacts/createPhonebook" class="btn btn-sm btn-primary" role="button">New Phonebook</a>
|
||||
</form>
|
||||
</div>
|
||||
|
45
app/plugins/contacts/views/phonebooks/view.html
Normal file
45
app/plugins/contacts/views/phonebooks/view.html
Normal file
@ -0,0 +1,45 @@
|
||||
<div class="container col-md-4 col-lg-4">
|
||||
<div class="row">
|
||||
<div class="panel panel-{color}">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">Phonebook</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="">
|
||||
<table class="table table-user-primary">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="left" width="200"><b>Title</b></td>
|
||||
<td align="right">{title}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left" width="200"><b>Icon</b></td>
|
||||
<td align="right">{icon}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left" width="200"><b>Color</b></td>
|
||||
<td align="right">{color}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" colspan="2"><b>Description</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">{description}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Created</b></td>
|
||||
<td align="right">{DTC}{createdAt}{/DTC}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-footer">
|
||||
<a href="{ROOT_URL}contacts/editPhonebook/{ID}" class="btn btn-sm btn-warning" role="button"><i class="glyphicon glyphicon-edit"></i></a>
|
||||
<a href="{ROOT_URL}contacts/deletePhonebook/{ID}" class="btn btn-sm btn-danger" role="button"><i class="glyphicon glyphicon-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
Reference in New Issue
Block a user