plugin wip
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@ -56,7 +56,6 @@ Temporary Items
|
||||
.htaccess
|
||||
app/config/*
|
||||
!app/config/constants.php
|
||||
uploads/images/*
|
||||
logs/*
|
||||
.vscode/
|
||||
mail.log
|
||||
|
@ -434,7 +434,10 @@ class Bookmarks extends Controller {
|
||||
}
|
||||
|
||||
public function import() {
|
||||
// echo '<pre>';
|
||||
if ( !App::$isMember ) {
|
||||
Issues::add( 'notice', 'You must have an active membership to import bookmarks.' );
|
||||
return $this->index();
|
||||
}
|
||||
|
||||
if ( ! Input::exists('submit') ) {
|
||||
return Views::view( 'bookmarks.import' );
|
||||
@ -489,6 +492,11 @@ class Bookmarks extends Controller {
|
||||
}
|
||||
|
||||
public function export() {
|
||||
if ( !App::$isMember ) {
|
||||
Issues::add( 'notice', 'You must have an active membership to export bookmarks.' );
|
||||
return $this->index();
|
||||
}
|
||||
|
||||
$folders = self::$folders->byUser();
|
||||
|
||||
if ( ! Input::exists('submit') ) {
|
||||
@ -544,6 +552,35 @@ class Bookmarks extends Controller {
|
||||
}
|
||||
}
|
||||
|
||||
public function share( $id = '' ) {
|
||||
$panelArray = [];
|
||||
$folders = self::$folders->byUser();
|
||||
if ( empty( $folders ) ) {
|
||||
return Views::view( 'bookmarks.share' );
|
||||
}
|
||||
foreach ( $folders as $key => $folder ) {
|
||||
$panel = new \stdClass();
|
||||
$folderObject = new \stdClass();
|
||||
if ( $folder->privacy == 'private' ) {
|
||||
$links = self::$bookmarks->publicByFolder( $folder->ID );
|
||||
} else {
|
||||
$links = self::$bookmarks->byFolder( $folder->ID );
|
||||
}
|
||||
$folderObject->bookmarks = $links;
|
||||
|
||||
$folderObject->ID = $folder->ID;
|
||||
$folderObject->uuid = $folder->uuid;
|
||||
$folderObject->title = $folder->title;
|
||||
$folderObject->color = $folder->color;
|
||||
$folderObject->privacyBadge = $folder->privacyBadge;
|
||||
|
||||
$folderObject->bookmarkListRows = Views::simpleView( 'bookmarks.components.shareListRows', $folderObject->bookmarks );
|
||||
$panel->panel = Views::simpleView( 'bookmarks.components.shareListPanel', [$folderObject] );
|
||||
$panelArray[] = $panel;
|
||||
}
|
||||
return Views::view( 'bookmarks.share', $panelArray );
|
||||
}
|
||||
|
||||
private function exportFolder( $title, $editedAt, $createdAt, $links ) {
|
||||
$htmlDoc = '<DT><H3 ADD_DATE="'.$createdAt.'" LAST_MODIFIED="'.$editedAt.'">'.$title.'</H3>' . PHP_EOL;
|
||||
$htmlDoc .= '<DL><p>' . PHP_EOL;
|
||||
@ -561,37 +598,7 @@ class Bookmarks extends Controller {
|
||||
return $htmlDoc;
|
||||
}
|
||||
|
||||
public function share( $id = '' ) {
|
||||
$panelArray = [];
|
||||
$folders = self::$folders->byUser();
|
||||
foreach ( $folders as $key => $folder ) {
|
||||
$panel = new \stdClass();
|
||||
$folderObject = new \stdClass();
|
||||
if ( $folder->privacy == 'private' ) {
|
||||
$folderObject->privacyBadge = '<span class="mx-2 badge bg-success">Private</span>';
|
||||
$links = self::$bookmarks->publicByFolder( $folder->ID );
|
||||
} else {
|
||||
$folderObject->privacyBadge = '<span class="mx-2 badge bg-danger">Public</span>';
|
||||
$links = self::$bookmarks->byFolder( $folder->ID );
|
||||
}
|
||||
$folderObject->bookmarks = $links;
|
||||
|
||||
$folderObject->ID = $folder->ID;
|
||||
$folderObject->uuid = $folder->uuid;
|
||||
$folderObject->title = $folder->title;
|
||||
$folderObject->color = $folder->color;
|
||||
|
||||
|
||||
|
||||
$folderObject->bookmarkListRows = Views::simpleView( 'bookmarks.components.shareListRows', $folderObject->bookmarks );
|
||||
$panel->panel = Views::simpleView( 'bookmarks.components.shareListPanel', [$folderObject] );
|
||||
$panelArray[] = $panel;
|
||||
}
|
||||
return Views::view( 'bookmarks.share', $panelArray );
|
||||
}
|
||||
|
||||
public function parseBookmarks($htmlContent)
|
||||
{
|
||||
private function parseBookmarks($htmlContent) {
|
||||
$started = false;
|
||||
$out = [];
|
||||
$currentFolder = [];
|
||||
|
@ -35,29 +35,6 @@ class Shared extends Controller {
|
||||
Components::set( 'SITE_URL', Routes::getAddress() );
|
||||
}
|
||||
|
||||
public function index() {
|
||||
$bookmarks = self::$bookmarks->noFolder();
|
||||
$folders = self::$folders->byUser();
|
||||
|
||||
$panelArray = [];
|
||||
if ( !empty( $folders ) ) {
|
||||
foreach ( $folders as $folder ) {
|
||||
$panel = new \stdClass();
|
||||
$folderObject = new \stdClass();
|
||||
$folderObject->bookmarks = self::$bookmarks->byFolder( $folder->ID );
|
||||
$folderObject->ID = $folder->ID;
|
||||
$folderObject->title = $folder->title;
|
||||
$folderObject->color = $folder->color;
|
||||
$folderObject->bookmarkListRows = Views::simpleView( 'bookmarks.components.bookmarkListRows', $folderObject->bookmarks );
|
||||
$panelArray[] = $folderObject;
|
||||
}
|
||||
}
|
||||
Components::set( 'foldersList', Views::simpleView( 'bookmarks.folders.list', $folders ) );
|
||||
Components::set( 'folderPanels', Views::simpleView( 'bookmarks.components.bookmarkListPanel', $panelArray ) );
|
||||
Components::set( 'bookmarksList', Views::simpleView( 'bookmarks.bookmarks.list', $bookmarks ) );
|
||||
return Views::view( 'bookmarks.dash' );
|
||||
}
|
||||
|
||||
public function shared( $type = '', $id = '' ) {
|
||||
if ( empty( $type ) ) {
|
||||
Session::flash( 'error', 'Unknown share' );
|
||||
@ -105,7 +82,7 @@ class Shared extends Controller {
|
||||
}
|
||||
}
|
||||
}
|
||||
return Views::view( 'bookmarks.shareLink', $bookmark );
|
||||
return Views::view( 'bookmarks.public.bookmark', $bookmark );
|
||||
}
|
||||
|
||||
public function folder( $id = '' ) {
|
||||
@ -122,6 +99,9 @@ class Shared extends Controller {
|
||||
Session::flash( 'error', 'Unknown share' );
|
||||
return Redirect::to( 'home/index' );
|
||||
}
|
||||
return Views::view( 'bookmarks.shareFolder', $folder );
|
||||
$folder->bookmarks = self::$bookmarks->unsafeByFolder( $folder->ID );
|
||||
$folder->bookmarkListRows = Views::simpleView( 'bookmarks.components.publicListRows', $folder->bookmarks );
|
||||
$folder->panel = Views::simpleView( 'bookmarks.components.publicList', [$folder] );
|
||||
return Views::view( 'bookmarks.public.folder', $folder );
|
||||
}
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ class Bookmarks extends DatabaseModel {
|
||||
[ 'hiddenAt', 'int', '11' ],
|
||||
[ 'order', 'int', '11' ],
|
||||
[ 'linkType', 'varchar', '32' ],
|
||||
[ 'uuid', 'char', '36' ],
|
||||
[ 'uuid', 'uuid', '36' ],
|
||||
];
|
||||
|
||||
/**
|
||||
@ -132,6 +132,20 @@ class Bookmarks extends DatabaseModel {
|
||||
return $this->filter( $bookmarks->results() );
|
||||
}
|
||||
|
||||
public function unsafeByFolder( $id, $limit = null ) {
|
||||
$whereClause = [ 'folderID', '=', $id ];
|
||||
if ( empty( $limit ) ) {
|
||||
$bookmarks = self::$db->get( $this->tableName, $whereClause );
|
||||
} else {
|
||||
$bookmarks = self::$db->get( $this->tableName, $whereClause, 'ID', 'DESC', [0, $limit] );
|
||||
}
|
||||
if ( !$bookmarks->count() ) {
|
||||
Debug::info( 'No Bookmarks found.' );
|
||||
return false;
|
||||
}
|
||||
return $this->filter( $bookmarks->results() );
|
||||
}
|
||||
|
||||
public function byFolder( $id, $limit = null ) {
|
||||
$whereClause = ['createdBy', '=', App::$activeUser->ID, 'AND'];
|
||||
|
||||
@ -351,32 +365,46 @@ class Bookmarks extends DatabaseModel {
|
||||
}
|
||||
|
||||
if ( $instance->privacy == 'private' ) {
|
||||
$instance->privacyBadge = '<span class="mx-3 badge bg-success">Private</span>';
|
||||
$instance->privacyBadge = '<span class="mx-2 translate-center badge bg-success rounded-pill">Private</span>';
|
||||
} else {
|
||||
$instance->privacyBadge = '<span class="mx-3 badge bg-danger">Public</span>';
|
||||
$instance->privacyBadge = '<span class="mx-2 translate-center badge bg-danger rounded-pill">Public</span>';
|
||||
}
|
||||
|
||||
if ( $instance->privacy == 'private' ) {
|
||||
$instance->publish = '
|
||||
<a href="{ROOT_URL}bookmarks/publish/'.$instance->ID.'" class="btn btn-sm btn-outline-danger">
|
||||
<i class="fa fa-fw fa-lock"></i>
|
||||
</a>';
|
||||
} else {
|
||||
$instance->publish = '
|
||||
<a href="{ROOT_URL}bookmarks/retract/'.$instance->ID.'" class="btn btn-sm btn-outline-secondary">
|
||||
<i class="fa fa-fw fa-lock"></i>
|
||||
</a>';
|
||||
}
|
||||
if ( empty( $instance->hiddenAt ) ) {
|
||||
$instance->hideBtn = '
|
||||
<a href="{ROOT_URL}bookmarks/hideBookmark/'.$instance->ID.'" class="btn btn-sm btn-warning">
|
||||
<a href="{ROOT_URL}bookmarks/hideBookmark/'.$instance->ID.'" class="btn btn-sm btn-outline-warning">
|
||||
<i class="fa fa-fw fa-eye"></i>
|
||||
</a>';
|
||||
} else {
|
||||
$instance->hideBtn = '
|
||||
<a href="{ROOT_URL}bookmarks/showBookmark/'.$instance->ID.'" class="btn btn-sm btn-default">
|
||||
<a href="{ROOT_URL}bookmarks/showBookmark/'.$instance->ID.'" class="btn btn-sm btn-outline-secondary">
|
||||
<i class="fa fa-fw fa-eye"></i>
|
||||
</a>';
|
||||
}
|
||||
|
||||
if ( empty( $instance->archivedAt ) ) {
|
||||
$instance->archiveBtn = '
|
||||
<a href="{ROOT_URL}bookmarks/archiveBookmark/'.$instance->ID.'" class="btn btn-sm btn-info">
|
||||
<a href="{ROOT_URL}bookmarks/archiveBookmark/'.$instance->ID.'" class="btn btn-sm btn-outline-info">
|
||||
<i class="fa fa-fw fa-briefcase"></i>
|
||||
</a>';
|
||||
} else {
|
||||
$instance->archiveBtn = '
|
||||
<a href="{ROOT_URL}bookmarks/unarchiveBookmark/'.$instance->ID.'" class="btn btn-sm btn-default">
|
||||
<a href="{ROOT_URL}bookmarks/unarchiveBookmark/'.$instance->ID.'" class="btn btn-sm btn-outline-secondary">
|
||||
<i class="fa fa-fw fa-briefcase"></i>
|
||||
</a>';
|
||||
}
|
||||
|
||||
if ( ! empty( $instance->refreshedAt ) && time() < ( $instance->refreshedAt + ( 60 * 10 ) ) ) {
|
||||
$instance->refreshBtn = '
|
||||
<a href="{ROOT_URL}bookmarks/refreshBookmark/'.$instance->ID.'" class="btn btn-sm btn-danger">
|
||||
@ -445,6 +473,7 @@ class Bookmarks extends DatabaseModel {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function retract( $id ) {
|
||||
if ( !Check::id( $id ) ) {
|
||||
Debug::info( 'Bookmarks: illegal ID.' );
|
||||
@ -461,7 +490,6 @@ class Bookmarks extends DatabaseModel {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
public function archive( $id ) {
|
||||
if ( !Check::id( $id ) ) {
|
||||
Debug::info( 'Bookmarks: illegal ID.' );
|
||||
|
@ -25,10 +25,20 @@ class Bookmarkviews extends DatabaseModel {
|
||||
[ 'title', 'varchar', '256' ],
|
||||
[ 'description', 'text', '' ],
|
||||
[ 'privacy', 'varchar', '48' ],
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[ 'createdBy', 'int', '11' ],
|
||||
[ 'createdAt', 'int', '11' ],
|
||||
[ 'updatedAt', 'int', '11' ],
|
||||
[ 'uuid', 'char', '36' ],
|
||||
[ 'uuid', 'text', '' ],
|
||||
];
|
||||
|
||||
/**
|
||||
|
@ -29,7 +29,7 @@ class Folders extends DatabaseModel {
|
||||
[ 'folderID', 'int', '11' ],
|
||||
[ 'createdBy', 'int', '11' ],
|
||||
[ 'createdAt', 'int', '11' ],
|
||||
[ 'uuid', 'char', '36' ],
|
||||
[ 'uuid', 'text', '' ],
|
||||
];
|
||||
|
||||
/**
|
||||
@ -197,6 +197,13 @@ class Folders extends DatabaseModel {
|
||||
// Real Work Starts Here
|
||||
$instance->prettyPrivacy = ucfirst( $instance->privacy );
|
||||
$instance->prettyTitle = ucfirst( $instance->title );
|
||||
|
||||
if ( $instance->privacy == 'private' ) {
|
||||
$instance->privacyBadge = '<span class="mx-2 translate-center badge bg-success rounded-pill">Private</span>';
|
||||
} else {
|
||||
$instance->privacyBadge = '<span class="mx-2 translate-center badge rounded-pill bg-danger">Public</span>';
|
||||
}
|
||||
|
||||
// Real Work Ends Here
|
||||
$out[] = $instance;
|
||||
if ( !empty( $end ) ) {
|
||||
|
@ -43,6 +43,10 @@ class Bookmarks extends Plugin {
|
||||
'url' => '{ROOT_URL}bookmarks/index',
|
||||
'filter' => 'loggedin',
|
||||
],
|
||||
[
|
||||
'text' => 'Extensions',
|
||||
'url' => '{ROOT_URL}extensions/index',
|
||||
],
|
||||
];
|
||||
public $configMatrix = [
|
||||
'enabled' => [
|
||||
|
@ -1,51 +1,56 @@
|
||||
<form action="" method="post" class="container py-4">
|
||||
<h2 class="text-center mb-4">Add Bookmark</h2>
|
||||
<fieldset>
|
||||
<div class="mb-3 row">
|
||||
<label for="title" class="col-lg-5 col-form-label text-end">Title</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="text" class="form-control" name="title" id="title" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-4 mt-4">
|
||||
<div class="offset-md-1 col-10 py-3 context-main-bg">
|
||||
<legend class="text-center">Add Bookmark</legend>
|
||||
<hr>
|
||||
<form method="post" class="container py-4">
|
||||
<fieldset>
|
||||
<div class="mb-3 row">
|
||||
<label for="title" class="col-lg-5 col-form-label text-end">Title</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="text" class="form-control" name="title" id="title" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="mb-3 row">
|
||||
<label for="url" class="col-lg-5 col-form-label text-end">URL</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="text" class="form-control" name="url" id="url" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="url" class="col-lg-5 col-form-label text-end">URL</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="text" class="form-control" name="url" id="url" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="mb-3 row">
|
||||
<label for="title" class="col-lg-5 col-form-label text-end">Description:</label>
|
||||
<div class="col-lg-3">
|
||||
<textarea class="form-control" name="description" maxlength="2000" rows="10" cols="50" id="description"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
{folderSelect}
|
||||
<div class="mb-3 row">
|
||||
<label for="title" class="col-lg-5 col-form-label text-end">Privacy</label>
|
||||
<div class="col-lg-3">
|
||||
<select id="privacy" name="privacy" class="form-select">
|
||||
<option value="private">Private</option>
|
||||
<option value="public">Public</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="title" class="col-lg-5 col-form-label text-end">Color</label>
|
||||
<div class="col-lg-3" id="colorContainer">
|
||||
{colorSelect}
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="title" class="col-lg-5 col-form-label text-end">Description:</label>
|
||||
<div class="col-lg-3">
|
||||
<textarea class="form-control" name="description" maxlength="2000" rows="10" cols="50" id="description"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
{folderSelect}
|
||||
<div class="mb-3 row">
|
||||
<label for="title" class="col-lg-5 col-form-label text-end">Privacy</label>
|
||||
<div class="col-lg-3">
|
||||
<select id="privacy" name="privacy" class="form-select">
|
||||
<option value="private">Private</option>
|
||||
<option value="public">Public</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="title" class="col-lg-5 col-form-label text-end">Color</label>
|
||||
<div class="col-lg-3" id="colorContainer">
|
||||
{colorSelect}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Hidden Token -->
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
<!-- Hidden Token -->
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
|
||||
<!-- Submit Button -->
|
||||
<div class="text-center">
|
||||
<button type="submit" name="submit" value="submit" class="btn btn-primary btn-lg">Create</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
<!-- Submit Button -->
|
||||
<div class="text-center">
|
||||
<button type="submit" name="submit" value="submit" class="btn btn-primary btn-lg">Create</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
@ -2,11 +2,11 @@
|
||||
<div class="col-xlg-6 col-lg-6 col-md-6 col-sm-6 bookmark-card">
|
||||
<div class="card m-3 accordion">
|
||||
<div class="accordion-item">
|
||||
<div class="card-header accordion-header bg-{color} context-main" data-bs-target="#Collapse{ID}" data-bs-toggle="collapse" aria-expanded="true" aria-controls="Collapse{ID}">
|
||||
{title}
|
||||
<div class="card-header accordion-header text-center bg-{color} context-main" data-bs-target="#Collapse{ID}" data-bs-toggle="collapse" aria-expanded="true" aria-controls="Collapse{ID}">
|
||||
<span class="h4 text-center">{title}</span>
|
||||
</div>
|
||||
<div id="Collapse{ID}" class="accordion-collapse collapse show" style="width:100%; position: relative;">
|
||||
<div class="card-body accordion-body context-other-bg p-2">
|
||||
<div id="Collapse{ID}" class="accordion-collapse collapse w-100 position-relative show">
|
||||
<div class="card-body accordion-body p-2 context-second-bg">
|
||||
<ul class="list-group">
|
||||
{bookmarkListRows}
|
||||
</ul>
|
||||
@ -14,8 +14,8 @@
|
||||
<div class="card-footer d-flex justify-content-center align-items-center context-main-bg">
|
||||
<a href="{ROOT_URL}bookmarks/createBookmark/{ID}" class="btn btn-sm btn-success"><i class="fa fa-fw fa-plus"></i></a></td>
|
||||
<span class="ms-auto">
|
||||
<a href="{ROOT_URL}bookmarks/bookmarks/{ID}" class="btn btn-sm btn-primary"><i class="fa fa-fw fa-list"></i></a>
|
||||
<a href="{ROOT_URL}bookmarks/folders/{ID}" class="btn btn-sm btn-primary"><i class="fa fa-fw fa-info-circle"></i></a></td>
|
||||
<a href="{ROOT_URL}bookmarks/bookmarks/{ID}" class="btn btn-sm btn-outline-primary"><i class="fa fa-fw fa-list"></i></a>
|
||||
<a href="{ROOT_URL}bookmarks/folders/{ID}" class="btn btn-sm btn-outline-primary"><i class="fa fa-fw fa-info-circle"></i></a></td>
|
||||
<a href="{ROOT_URL}bookmarks/editFolder/{ID}" class="btn btn-sm btn-warning"><i class="fa fa-fw fa-pencil"></i></a></td>
|
||||
<a href="{ROOT_URL}bookmarks/deleteFolder/{ID}" class="btn btn-sm btn-danger"><i class="fa fa-fw fa-trash"></i></a></td>
|
||||
</span>
|
||||
@ -26,7 +26,7 @@
|
||||
</div>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<div class="col-xlg-6 col-lg-6 col-md-6 col-sm-6">
|
||||
<p>no folders</p>
|
||||
<div class="col-12 text-center h4">
|
||||
<p>No folders found.</p>
|
||||
</div>
|
||||
{/ALT}
|
@ -1,18 +1,19 @@
|
||||
|
||||
{LOOP}
|
||||
<li class="list-group-item mb-1 context-main-b bg-{color}">
|
||||
<li class="list-group-item context-main-b bg-{color}">
|
||||
<a href="{ROOT_URL}bookmarks/bookmark/{ID}" class="context-main">{iconHtml}</a>
|
||||
<a href="{url}"> {title}</a>
|
||||
<span class="float-end">
|
||||
{hideBtn}
|
||||
{archiveBtn}
|
||||
{publish}
|
||||
<a href="{ROOT_URL}bookmarks/editBookmark/{ID}" class="btn btn-sm btn-warning"><i class="fa fa-fw fa-pencil"></i></a>
|
||||
<a href="{ROOT_URL}bookmarks/deleteBookmark/{ID}" class="btn btn-sm btn-danger"><i class="fa fa-fw fa-trash"></i></a>
|
||||
</span>
|
||||
</li>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<li class="list-group-item py-1">
|
||||
<li class="list-group-item context-main context-main-bg">
|
||||
<p class="list-group text-center">No Bookmarks</p>
|
||||
</li>
|
||||
{/ALT}
|
27
app/plugins/bookmarks/views/components/publicList.html
Normal file
27
app/plugins/bookmarks/views/components/publicList.html
Normal file
@ -0,0 +1,27 @@
|
||||
{LOOP}
|
||||
<div class="bookmark-card">
|
||||
<div class="card m-3 accordion">
|
||||
<div class="accordion-item">
|
||||
|
||||
<div class="card-header accordion-header bg-{color} context-main">
|
||||
<div class="d-flex justify-content-between align-items-center w-100" data-bs-target="#Collapse{ID}" data-bs-toggle="collapse" aria-expanded="true" aria-controls="Collapse{ID}">
|
||||
<div class="text-center h4">{title}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="Collapse{ID}" class="accordion-collapse collapse w-100 position-relative show">
|
||||
<div class="card-body accordion-body p-2 context-second-bg">
|
||||
<ul class="list-group">
|
||||
{bookmarkListRows}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<div class="context-other-bg">
|
||||
<p class="context-other-bg">no Folders</p>
|
||||
</div>
|
||||
{/ALT}
|
30
app/plugins/bookmarks/views/components/publicListRows.html
Normal file
30
app/plugins/bookmarks/views/components/publicListRows.html
Normal file
@ -0,0 +1,30 @@
|
||||
{LOOP}
|
||||
<li class="list-group-item context-main-bg bg-{color}">
|
||||
<a href="{ROOT_URL}bookmarks/bookmark/{ID}" class="context-main">{iconHtml}</a>
|
||||
<a href="{url}"> {title}</a>
|
||||
<span class="float-end">
|
||||
<a class="btn btn-sm btn-primary" data-bs-toggle="modal" data-bs-target="#linkShare{ID}">
|
||||
<i class="fa fa-fw fa-share"></i>
|
||||
</a>
|
||||
<div class="modal fade" id="linkShare{ID}" tabindex="-1" style="display: none;" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered modal-dialog-scrollable">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5">Share Url</h1>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<input type="text" value="{SITE_URL}shared/link/{uuid}" name="input" class="w-100 form-control" id="shareLinkUrlInput{ID}">
|
||||
<button class="btn btn-secondary mt-2" onclick="copyElementText('shareLinkUrlInput{ID}')">Copy</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</span>
|
||||
</li>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<li class="list-group-item context-main context-main-bg">
|
||||
<p class="list-group text-center">No Bookmarks</p>
|
||||
</li>
|
||||
{/ALT}
|
@ -2,35 +2,45 @@
|
||||
<div class="col-xlg-6 col-lg-6 col-md-6 col-sm-6 bookmark-card">
|
||||
<div class="card m-3 accordion">
|
||||
<div class="accordion-item">
|
||||
<div class="card-header accordion-header bg-{color} context-main" data-bs-target="#Collapse{ID}" data-bs-toggle="collapse" aria-expanded="true" aria-controls="Collapse{ID}">
|
||||
{title}{privacyBadge}
|
||||
<a class="btn btn-sm btn-primary float-end" data-bs-toggle="modal" data-bs-target="#linkShare{ID}">
|
||||
<i class="fa fa-fw fa-share"></i>
|
||||
</a>
|
||||
<div class="modal fade" id="linkShare{ID}" tabindex="-1" style="display: none;" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered modal-dialog-scrollable">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5" id="exampleModalCenteredScrollableTitle">Modal title</h1>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<input type="text" value="{SITE_URL}shared/folder/{uuid}" name="input">
|
||||
</div>
|
||||
|
||||
<div class="card-header accordion-header bg-{color} context-main">
|
||||
<div class="d-flex justify-content-between align-items-center w-100">
|
||||
<span data-bs-target="#Collapse{ID}" data-bs-toggle="collapse" aria-expanded="true" aria-controls="Collapse{ID}">
|
||||
<span class="text-center px-5">{privacyBadge}</span>
|
||||
<span class="h4 text-center px-5">{title}</span>
|
||||
</span>
|
||||
<a class="btn btn-sm btn-primary btn-rounded" data-bs-toggle="modal" data-bs-target="#linkShare{ID}">
|
||||
<i class="fa fa-fw fa-share"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade context-main" id="linkShare{ID}" tabindex="-1" style="display: none;" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered modal-dialog-scrollable">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header context-main-bg">
|
||||
<h1 class="modal-title fs-5">Share Url</h1>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body context-second-bg">
|
||||
<p>This link can be shared with anyone and will show display info as long as it is set to public privacy.</p>
|
||||
<input type="text" value="{SITE_URL}shared/folder/{uuid}" name="input" class="w-100 form-control" id="shareFolderUrlInput{ID}">
|
||||
<button class="btn btn-secondary mt-2" onclick="copyElementText('shareFolderUrlInput{ID}')">Copy</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="Collapse{ID}" class="accordion-collapse collapse show" style="width:100%; position: relative;">
|
||||
<div class="card-body accordion-body context-other-bg p-2">
|
||||
|
||||
<div id="Collapse{ID}" class="accordion-collapse collapse w-100 position-relative show">
|
||||
<div class="card-body accordion-body p-2 context-second-bg">
|
||||
<ul class="list-group">
|
||||
{bookmarkListRows}
|
||||
</ul>
|
||||
</div>
|
||||
<div class="card-footer d-flex justify-content-center align-items-center context-main-bg">
|
||||
<span class="ms-auto">
|
||||
<a href="{ROOT_URL}bookmarks/bookmarks/{ID}" class="btn btn-sm btn-primary"><i class="fa fa-fw fa-list"></i></a>
|
||||
<a href="{ROOT_URL}bookmarks/folders/{ID}" class="btn btn-sm btn-primary"><i class="fa fa-fw fa-info-circle"></i></a></td>
|
||||
<a href="{ROOT_URL}bookmarks/bookmarks/{ID}" class="btn btn-sm btn-outline-primary "><i class="fa fa-fw fa-list"></i></a>
|
||||
<a href="{ROOT_URL}bookmarks/folders/{ID}" class="btn btn-sm btn-outline-primary"><i class="fa fa-fw fa-info-circle"></i></a></td>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@ -39,7 +49,7 @@
|
||||
</div>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<div class="col-xlg-6 col-lg-6 col-md-6 col-sm-6">
|
||||
<p>no folders</p>
|
||||
<div class="context-other-bg">
|
||||
<p class="context-other-bg">no Folders</p>
|
||||
</div>
|
||||
{/ALT}
|
@ -1,9 +1,9 @@
|
||||
{LOOP}
|
||||
<li class="list-group-item mb-1 context-main-b bg-{color}">
|
||||
<li class="list-group-item context-main-bg bg-{color}">
|
||||
<a href="{ROOT_URL}bookmarks/bookmark/{ID}" class="context-main">{iconHtml}</a>
|
||||
<a href="{url}"> {title}</a>{privacyBadge}
|
||||
<span class="float-end">
|
||||
<a href="{ROOT_URL}bookmarks/retract/{ID}" class="btn btn-sm btn-success"><i class="fa fa-fw fa-eye"></i></a>
|
||||
{publish}
|
||||
<a class="btn btn-sm btn-primary" data-bs-toggle="modal" data-bs-target="#linkShare{ID}">
|
||||
<i class="fa fa-fw fa-share"></i>
|
||||
</a>
|
||||
@ -11,11 +11,12 @@
|
||||
<div class="modal-dialog modal-dialog-centered modal-dialog-scrollable">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5" id="exampleModalCenteredScrollableTitle">Modal title</h1>
|
||||
<h1 class="modal-title fs-5">Share Url</h1>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<input type="text" value="{SITE_URL}shared/link/{uuid}" name="input">
|
||||
<input type="text" value="{SITE_URL}shared/link/{uuid}" name="input" class="w-100 form-control" id="shareLinkUrlInput{ID}">
|
||||
<button class="btn btn-secondary mt-2" onclick="copyElementText('shareLinkUrlInput{ID}')">Copy</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -24,7 +25,7 @@
|
||||
</li>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<li class="list-group-item py-1">
|
||||
<li class="list-group-item context-main context-main-bg">
|
||||
<p class="list-group text-center">No Bookmarks</p>
|
||||
</li>
|
||||
{/ALT}
|
@ -1,15 +1,15 @@
|
||||
|
||||
<div class="row mt-4">
|
||||
<div class="offset-md-1 col-5 mr-2 py-3 context-main-bg">
|
||||
<legend class="text-center">Unsorted Bookmarks</legend>
|
||||
{bookmarksList}
|
||||
</div>
|
||||
<div class="col-5 py-3 ml-2 context-main-bg">
|
||||
<legend class="text-center">Folders List</legend>
|
||||
{foldersList}
|
||||
</div>
|
||||
<div class="row mt-4 g-1">
|
||||
<div class="offset-md-1 col-5 mr-2 py-3 context-main-bg">
|
||||
<legend class="text-center">Unsorted Bookmarks</legend>
|
||||
{bookmarksList}
|
||||
</div>
|
||||
<div class="col-5 py-3 ml-2 context-main-bg">
|
||||
<legend class="text-center">Folders List</legend>
|
||||
{foldersList}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-4 mt-4">
|
||||
<div class="mb-4 mt-4">
|
||||
<div class="offset-md-1 col-10 py-3 context-main-bg">
|
||||
<legend class="text-center">Bookmarks</legend>
|
||||
<hr>
|
||||
|
@ -1,41 +1,48 @@
|
||||
<form action="" method="post" class="container py-4">
|
||||
<h2 class="text-center mb-4">Create Folder</h2>
|
||||
<fieldset>
|
||||
<div class="mb-3 row">
|
||||
<label for="title" class="col-lg-5 col-form-label text-end">Title</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="text" class="form-control" name="title" id="title" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="title" class="col-lg-5 col-form-label text-end">Description:</label>
|
||||
<div class="col-lg-3">
|
||||
<textarea class="form-control" name="description" maxlength="2000" rows="10" cols="50" id="description"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
{folderSelect}
|
||||
<div class="mb-3 row">
|
||||
<label for="title" class="col-lg-5 col-form-label text-end">Privacy</label>
|
||||
<div class="col-lg-3">
|
||||
<select id="privacy" name="privacy" class="form-select">
|
||||
<option value="private">Private</option>
|
||||
<option value="public">Public</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="title" class="col-lg-5 col-form-label text-end">Color</label>
|
||||
<div class="col-lg-3">
|
||||
{colorSelect}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Hidden Token -->
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
<div class="mb-4 mt-4">
|
||||
<div class="offset-md-1 col-10 py-3 context-main-bg">
|
||||
<legend class="text-center">Add Folder</legend>
|
||||
<hr>
|
||||
|
||||
<!-- Submit Button -->
|
||||
<div class="text-center">
|
||||
<button type="submit" name="submit" value="submit" class="btn btn-primary btn-lg">Create</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
<form action="" method="post" class="container py-4">
|
||||
<fieldset>
|
||||
<div class="mb-3 row">
|
||||
<label for="title" class="col-lg-5 col-form-label text-end">Title</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="text" class="form-control" name="title" id="title" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="title" class="col-lg-5 col-form-label text-end">Description:</label>
|
||||
<div class="col-lg-3">
|
||||
<textarea class="form-control" name="description" maxlength="2000" rows="10" cols="50" id="description"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
{folderSelect}
|
||||
<div class="mb-3 row">
|
||||
<label for="title" class="col-lg-5 col-form-label text-end">Privacy</label>
|
||||
<div class="col-lg-3">
|
||||
<select id="privacy" name="privacy" class="form-select">
|
||||
<option value="private">Private</option>
|
||||
<option value="public">Public</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="title" class="col-lg-5 col-form-label text-end">Color</label>
|
||||
<div class="col-lg-3">
|
||||
{colorSelect}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Hidden Token -->
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
|
||||
<!-- Submit Button -->
|
||||
<div class="text-center">
|
||||
<button type="submit" name="submit" value="submit" class="btn btn-primary btn-lg">Create</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
48
app/plugins/bookmarks/views/public/bookmark.html
Normal file
48
app/plugins/bookmarks/views/public/bookmark.html
Normal file
@ -0,0 +1,48 @@
|
||||
<div class="container py-4">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card shadow">
|
||||
<!-- Card Header -->
|
||||
<div class="card-header text-center bg-dark text-white">
|
||||
<h3 class="card-title mb-0">Bookmark</h3>
|
||||
</div>
|
||||
|
||||
<!-- Card Body -->
|
||||
<div class="card-body">
|
||||
<div class="row align-items-center">
|
||||
|
||||
<!-- User Details -->
|
||||
<div class="offset-md-2 col-md-8">
|
||||
<table class="table table-borderless">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row">Title:</th>
|
||||
<td>{title}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">URL:</th>
|
||||
<td>{url}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Created:</th>
|
||||
<td>{DTC}{createdAt}{/DTC}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Last Refreshed:</th>
|
||||
<td>{DTC}{refreshedAt}{/DTC}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row" colspan="2">Icon</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">{iconHtml}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -19,17 +19,13 @@
|
||||
<th scope="row">Title:</th>
|
||||
<td>{title}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Privacy:</th>
|
||||
<td>{privacy}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Color:</th>
|
||||
<td>{color}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Created:</th>
|
||||
<td>{DTC}{createdAt}{/DTC}</td>
|
||||
<th scope="row">Added on:</th>
|
||||
<td>{DTC date}{createdAt}{/DTC}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row" colspan="2">Description</th>
|
||||
@ -45,4 +41,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12">
|
||||
{panel}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -5,15 +5,15 @@
|
||||
<div class="offset-3 col-lg-6 my-4">
|
||||
<p>Any link or folder can be shared. By default, the extensions and app both default to <strong>private</strong>. On this page, you can quickly see a list of any public links and folders. These "public" items can be shared with anyone who has the link.</p>
|
||||
</div>
|
||||
{LOOP}
|
||||
<div class="col-6 col-md-12">
|
||||
{panel}
|
||||
</div>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<div class="col-12">
|
||||
<p class="text-center">No <strong>public</strong> folders found.</p>
|
||||
</div>
|
||||
{/ALT}
|
||||
<div class="row g-3" data-masonry='{ "percentPosition": false }' id="bookmarkSort">
|
||||
{LOOP}
|
||||
{panel}
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<div class="col-12">
|
||||
<p class="text-center">No <strong>public</strong> folders found.</p>
|
||||
</div>
|
||||
{/ALT}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -1,83 +0,0 @@
|
||||
<div class="container py-4">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card shadow">
|
||||
<!-- Card Header -->
|
||||
<div class="card-header text-center bg-dark text-white">
|
||||
<h3 class="card-title mb-0">Bookmark</h3>
|
||||
</div>
|
||||
|
||||
<!-- Card Body -->
|
||||
<div class="card-body">
|
||||
<div class="row align-items-center">
|
||||
|
||||
<!-- User Details -->
|
||||
<div class="offset-md-2 col-md-8">
|
||||
<table class="table table-borderless">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row">Title:</th>
|
||||
<td>{title}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">URL:</th>
|
||||
<td>{url}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Type:</th>
|
||||
<td>{linkType}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Privacy:</th>
|
||||
<td>{privacy}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Color:</th>
|
||||
<td>{color}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Created:</th>
|
||||
<td>{DTC}{createdAt}{/DTC}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Archived:</th>
|
||||
<td>{DTC}{archivedAt}{/DTC}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Hidden:</th>
|
||||
<td>{DTC}{hiddenAt}{/DTC}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Last Refreshed:</th>
|
||||
<td>{DTC}{refreshedAt}{/DTC}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row" colspan="2">Description</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">{description}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row" colspan="2">Icon</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">{iconHtml}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">{icon}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row" colspan="2">Meta</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">{meta}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -57,15 +57,15 @@ class Products extends AdminController {
|
||||
|
||||
public function edit( $id = null ) {
|
||||
if ( !Input::exists( 'submit' ) ) {
|
||||
return Views::view( 'members.admin.products.edit', self::$posts->findById( $id ) );
|
||||
return Views::view( 'members.admin.products.edit', self::$products->findById( $id ) );
|
||||
}
|
||||
if ( !Forms::check( 'editMembershipProduct' ) ) {
|
||||
Issues::add( 'error', [ 'There was an error with your form.' => Check::userErrors() ] );
|
||||
return $this->index();
|
||||
}
|
||||
|
||||
if ( self::$posts->updatePost( $id, Input::post( 'title' ), Input::post( 'blogPost' ), Input::post( 'submit' ) ) === true ) {
|
||||
Issues::add( 'success', 'Post Updated.' );
|
||||
if ( self::$products->updatePost( $id, Input::post( 'name' ), Input::post( 'description' ), Input::post( 'monthly_price' ), Input::post( 'yearly_price' ) ) === true ) {
|
||||
Issues::add( 'success', 'Your product Updated.' );
|
||||
return $this->index();
|
||||
}
|
||||
Issues::add( 'error', 'There was an error with your request.' );
|
||||
@ -75,9 +75,9 @@ class Products extends AdminController {
|
||||
public function view( $id = null ) {
|
||||
$data = self::$products->findById( $id );
|
||||
if ( $data !== false ) {
|
||||
return Views::view( 'blog.admin.view', $data );
|
||||
return Views::view( 'members.admin.products.view', $data );
|
||||
}
|
||||
Issues::add( 'error', 'Post not found.' );
|
||||
Issues::add( 'error', 'Product not found.' );
|
||||
$this->index();
|
||||
}
|
||||
|
||||
|
@ -39,7 +39,13 @@ class Records extends AdminController {
|
||||
public function edit( $data = null ) {
|
||||
}
|
||||
|
||||
public function view( $data = null ) {
|
||||
public function view( $id = null ) {
|
||||
$data = self::$memberships->findById( $id );
|
||||
if ( $data !== false ) {
|
||||
return Views::view( 'members.admin.memberships.view', $data );
|
||||
}
|
||||
Issues::add( 'error', 'Membership not found.' );
|
||||
$this->index();
|
||||
}
|
||||
|
||||
public function delete( $data = null ) {
|
||||
|
@ -53,10 +53,10 @@ class Members extends Plugin {
|
||||
'text' => '<i class="fa fa-fw fa-database"></i> Subscriptions',
|
||||
'url' => '{ROOT_URL}admin/records',
|
||||
],
|
||||
[
|
||||
'text' => '<i class="fa fa-fw fa-database"></i> Invoices',
|
||||
'url' => '{ROOT_URL}admin/invoices',
|
||||
],
|
||||
// [
|
||||
// 'text' => '<i class="fa fa-fw fa-database"></i> Invoices',
|
||||
// 'url' => '{ROOT_URL}admin/invoices',
|
||||
// ],
|
||||
],
|
||||
],
|
||||
];
|
||||
|
@ -1,44 +1,47 @@
|
||||
<legend>Memberships</legend>
|
||||
{PAGINATION}
|
||||
<form action="{ROOT_URL}admin/products/delete" method="post">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 25%">Name</th>
|
||||
<th style="width: 20%">status</th>
|
||||
<th style="width: 20%">Price</th>
|
||||
<th style="width: 10%">Start</th>
|
||||
<th style="width: 10%">End</th>
|
||||
<th style="width: 5%"></th>
|
||||
<th style="width: 5%"></th>
|
||||
<th style="width: 5%">
|
||||
<INPUT type="checkbox" onchange="checkAll(this)" name="check.f" value="F_[]"/>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{LOOP}
|
||||
<tr>
|
||||
<td>{name}</td>
|
||||
<td>{status}</td>
|
||||
<td>{prettyPrice}</td>
|
||||
<td>{DTC}{current_period_start}{/DTC}</td>
|
||||
<td>{DTC}{current_period_end}{/DTC}</td>
|
||||
<td><a href="{ROOT_URL}admin/records/view/{ID}" class="btn btn-sm btn-primary"><i class="fa fa-fw fa-upload"></i></a></td>
|
||||
<td><a href="{ROOT_URL}admin/records/delete/{ID}" class="btn btn-sm btn-danger"><i class="fa fa-fw fa-trash"></i></a></td>
|
||||
<td>
|
||||
<input type="checkbox" value="{ID}" name="MP_[]">
|
||||
</td>
|
||||
</tr>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<tr>
|
||||
<td align="center" colspan="6">
|
||||
No results to show.
|
||||
</td>
|
||||
</tr>
|
||||
{/ALT}
|
||||
</tbody>
|
||||
</table>
|
||||
<button name="submit" value="submit" type="submit" class="btn btn-sm btn-danger">Delete</button>
|
||||
</form>
|
||||
<div class="context-main-bg context-main p-3">
|
||||
<legend class="text-center">Memberships</legend>
|
||||
<hr>
|
||||
{ADMIN_BREADCRUMBS}
|
||||
<form action="{ROOT_URL}admin/products/delete" method="post">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 25%">Name</th>
|
||||
<th style="width: 20%">status</th>
|
||||
<th style="width: 20%">Price</th>
|
||||
<th style="width: 10%">Start</th>
|
||||
<th style="width: 10%">End</th>
|
||||
<th style="width: 5%"></th>
|
||||
<th style="width: 5%"></th>
|
||||
<th style="width: 5%">
|
||||
<INPUT type="checkbox" onchange="checkAll(this)" name="check.f" value="F_[]"/>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{LOOP}
|
||||
<tr>
|
||||
<td>{name}</td>
|
||||
<td>{status}</td>
|
||||
<td>{prettyPrice}</td>
|
||||
<td>{DTC}{current_period_start}{/DTC}</td>
|
||||
<td>{DTC}{current_period_end}{/DTC}</td>
|
||||
<td><a href="{ROOT_URL}admin/records/view/{ID}" class="btn btn-sm btn-primary"><i class="fa fa-fw fa-upload"></i></a></td>
|
||||
<td><a href="{ROOT_URL}admin/records/delete/{ID}" class="btn btn-sm btn-danger"><i class="fa fa-fw fa-trash"></i></a></td>
|
||||
<td>
|
||||
<input type="checkbox" value="{ID}" name="MP_[]">
|
||||
</td>
|
||||
</tr>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<tr>
|
||||
<td align="center" colspan="6">
|
||||
No results to show.
|
||||
</td>
|
||||
</tr>
|
||||
{/ALT}
|
||||
</tbody>
|
||||
</table>
|
||||
<button name="submit" value="submit" type="submit" class="btn btn-sm btn-danger"><i class="fa fa-fw fa-trash"></i></button>
|
||||
</form>
|
||||
</div>
|
76
app/plugins/members/views/admin/memberships/view.html
Normal file
76
app/plugins/members/views/admin/memberships/view.html
Normal file
@ -0,0 +1,76 @@
|
||||
<div class="container py-4">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
{ADMIN_BREADCRUMBS}
|
||||
<div class="card shadow">
|
||||
<!-- Card Header -->
|
||||
<div class="card-header text-center bg-dark text-white">
|
||||
<h3 class="card-title mb-0">{name}</h3>
|
||||
</div>
|
||||
|
||||
<!-- Card Body -->
|
||||
<div class="card-body">
|
||||
<div class="row align-items-center">
|
||||
<!-- Details -->
|
||||
<table class="table table-borderless">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row" class="col-3">User</th>
|
||||
<td>{name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Status</th>
|
||||
<td>{status}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Billing Frequency</th>
|
||||
<td>{billing_frequency}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Started:</th>
|
||||
<td>{DTC}{current_period_end}{/DTC}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Ended:</th>
|
||||
<td>{DTC}{current_period_start}{/DTC}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Stripe Customer</th>
|
||||
<td class="input-group mb-3">
|
||||
<input type="text" value="{stripe_customer}" name="input" class="form-control" id="stripeCustomer{ID}">
|
||||
<button class="btn btn-secondary" onclick="copyElementText('stripeCustomer{ID}')">Copy</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Stripe Subscription</th>
|
||||
<td class="input-group mb-3">
|
||||
<input type="text" value="{stripe_subscription}" name="input" class="form-control" id="stripeSubscription{ID}">
|
||||
<button class="btn btn-secondary" onclick="copyElementText('stripeSubscription{ID}')">Copy</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Stripe Subscription Price</th>
|
||||
<td class="input-group mb-3">
|
||||
<input type="text" value="{subscription_price_id}" name="input" class="form-control" id="stripeSubscriptionPrice{ID}">
|
||||
<button class="btn btn-secondary" onclick="copyElementText('stripeSubscriptionPrice{ID}')">Copy</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Admin Controls -->
|
||||
<div class="card-footer text-center">
|
||||
{ADMIN}
|
||||
<form action="{ROOT_URL}admin/feedback/delete" method="post">
|
||||
<INPUT type="hidden" name="F_" value="{ID}"/>
|
||||
<input type="hidden" name="token" value="{TOKEN}" />
|
||||
<button name="submit" value="submit" type="submit" class="btn btn-sm btn-danger"><i class="fa fa-fw fa-trash"></i></button>
|
||||
</form>
|
||||
{/ADMIN}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -1,34 +1,51 @@
|
||||
<legend>Create Membership Product</legend>
|
||||
<form action="" method="post" class="form-horizontal">
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
<div class="form-group">
|
||||
<label for="name" class="col-lg-3 control-label">Name</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="text" class="form-control" name="name" id="name">
|
||||
<div class="context-main-bg context-main p-3">
|
||||
<legend class="text-center">Create Membership Product</legend>
|
||||
<hr>
|
||||
{ADMIN_BREADCRUMBS}
|
||||
<form action="" method="post">
|
||||
<fieldset>
|
||||
<!-- Name -->
|
||||
<div class="mb-3 row">
|
||||
<label for="name" class="col-lg-3 col-form-label text-end">Name:</label>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="name" id="name">
|
||||
</div>
|
||||
</div>
|
||||
<!-- Monthly Price -->
|
||||
<div class="mb-3 row">
|
||||
<label for="monthly_price" class="col-lg-3 col-form-label text-end">Monthly Price:</label>
|
||||
<div class="col-lg-6">
|
||||
<input type="number" class="form-control" name="monthly_price" id="monthly_price">
|
||||
<small class="form-text text-muted">Integer required: $4.99 : 499</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Yearly Price -->
|
||||
<div class="mb-3 row">
|
||||
<label for="yearly_price" class="col-lg-3 col-form-label text-end">Yearly Price:</label>
|
||||
<div class="col-lg-6">
|
||||
<input type="number" class="form-control" name="yearly_price" id="yearly_price">
|
||||
<small class="form-text text-muted">Integer required: $4.99 : 499</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Description -->
|
||||
<div class="mb-3 row">
|
||||
<label for="description" class="col-lg-3 col-form-label text-end">Description:</label>
|
||||
<div class="col-lg-6">
|
||||
<textarea class="form-control" name="description" id="description" rows="6" maxlength="2000" required></textarea>
|
||||
<small class="form-text text-muted">Max: 2000 characters</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Hidden Token -->
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
</fieldset>
|
||||
|
||||
<!-- Submit Button -->
|
||||
<div class="text-center">
|
||||
<button type="submit" name="submit" value="submit" class="btn btn-primary btn-lg center-block">Send</button>
|
||||
</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="monthly_price" class="col-lg-3 control-label">Monthly Price:</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="number" class="form-control" name="monthly_price" id="monthly_price">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="yearly_price" class="col-lg-3 control-label">Yearly Price:</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="number" class="form-control" name="yearly_price" id="yearly_price">
|
||||
</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>
|
||||
</form>
|
||||
</div>
|
@ -1,34 +1,51 @@
|
||||
<legend>Edit Membership Product</legend>
|
||||
<form action="" method="post" class="form-horizontal">
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
<div class="form-group">
|
||||
<label for="name" class="col-lg-3 control-label">Name</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="text" class="form-control" name="name" id="name" value="{name}">
|
||||
<div class="context-main-bg context-main p-3">
|
||||
<legend class="text-center">Create Membership Product</legend>
|
||||
<hr>
|
||||
{ADMIN_BREADCRUMBS}
|
||||
<form action="" method="post">
|
||||
<fieldset>
|
||||
<!-- Name -->
|
||||
<div class="mb-3 row">
|
||||
<label for="name" class="col-lg-3 col-form-label text-end">Name:</label>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="name" id="name" value="{name}">
|
||||
</div>
|
||||
</div>
|
||||
<!-- Monthly Price -->
|
||||
<div class="mb-3 row">
|
||||
<label for="monthly_price" class="col-lg-3 col-form-label text-end">Monthly Price:</label>
|
||||
<div class="col-lg-6">
|
||||
<input type="number" class="form-control" name="monthly_price" id="monthly_price" value="{monthly_price}">
|
||||
<small class="form-text text-muted">Integer required: $4.99 : 499</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Yearly Price -->
|
||||
<div class="mb-3 row">
|
||||
<label for="yearly_price" class="col-lg-3 col-form-label text-end">Yearly Price:</label>
|
||||
<div class="col-lg-6">
|
||||
<input type="number" class="form-control" name="yearly_price" id="yearly_price" value="{yearly_price}">
|
||||
<small class="form-text text-muted">Integer required: $4.99 : 499</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Description -->
|
||||
<div class="mb-3 row">
|
||||
<label for="description" class="col-lg-3 col-form-label text-end">Description:</label>
|
||||
<div class="col-lg-6">
|
||||
<textarea class="form-control" name="description" id="description" rows="6" maxlength="2000" required>{description}</textarea>
|
||||
<small class="form-text text-muted">Max: 2000 characters</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Hidden Token -->
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
</fieldset>
|
||||
|
||||
<!-- Submit Button -->
|
||||
<div class="text-center">
|
||||
<button type="submit" name="submit" value="submit" class="btn btn-primary btn-lg center-block">Send</button>
|
||||
</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="monthly_price" class="col-lg-3 control-label">Monthly Price:</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="number" class="form-control" name="monthly_price" id="monthly_price" value="{monthly_price}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="yearly_price" class="col-lg-3 control-label">Yearly Price:</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="number" class="form-control" name="yearly_price" id="yearly_price" value="{yearly_price}">
|
||||
</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>
|
||||
</form>
|
||||
</div>
|
@ -1,41 +1,46 @@
|
||||
<legend>Membership Products</legend>
|
||||
{PAGINATION}
|
||||
<form action="{ROOT_URL}admin/products/delete" method="post">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 10%">Name</th>
|
||||
<th style="width: 25%">Monthly Price</th>
|
||||
<th style="width: 55%">Yearly Price</th>
|
||||
<th style="width: 5%"></th>
|
||||
<th style="width: 5%"></th>
|
||||
<th style="width: 5%">
|
||||
<INPUT type="checkbox" onchange="checkAll(this)" name="check.f" value="F_[]"/>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{LOOP}
|
||||
<tr>
|
||||
<td>{name}</td>
|
||||
<td>{monthly_price}</td>
|
||||
<td>{yearly_price}</td>
|
||||
<td><a href="{ROOT_URL}admin/products/view/{ID}" class="btn btn-sm btn-primary"><i class="fa fa-fw fa-upload"></i></a></td>
|
||||
<td><a href="{ROOT_URL}admin/products/delete/{ID}" class="btn btn-sm btn-danger"><i class="fa fa-fw fa-trash"></i></a></td>
|
||||
<td>
|
||||
<input type="checkbox" value="{ID}" name="MP_[]">
|
||||
</td>
|
||||
</tr>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<tr>
|
||||
<td align="center" colspan="6">
|
||||
No results to show.
|
||||
</td>
|
||||
</tr>
|
||||
{/ALT}
|
||||
</tbody>
|
||||
</table>
|
||||
<a href="{ROOT_URL}admin/products/create" class="btn btn-sm btn-primary">Create</a>
|
||||
<button name="submit" value="submit" type="submit" class="btn btn-sm btn-danger">Delete</button>
|
||||
</form>
|
||||
<div class="context-main-bg context-main p-3">
|
||||
<legend class="text-center">Membership Products</legend>
|
||||
<hr>
|
||||
{ADMIN_BREADCRUMBS}
|
||||
<form action="{ROOT_URL}admin/products/delete" method="post">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 10%">Name</th>
|
||||
<th style="width: 25%">Monthly Price</th>
|
||||
<th style="width: 50%">Yearly Price</th>
|
||||
<th style="width: 5%"></th>
|
||||
<th style="width: 5%"></th>
|
||||
<th style="width: 5%"></th>
|
||||
<th style="width: 5%">
|
||||
<INPUT type="checkbox" onchange="checkAll(this)" name="check.f" value="F_[]"/>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{LOOP}
|
||||
<tr>
|
||||
<td>{name}</td>
|
||||
<td>{monthly_price}</td>
|
||||
<td>{yearly_price}</td>
|
||||
<td><a href="{ROOT_URL}admin/products/view/{ID}" class="btn btn-sm btn-primary"><i class="fa fa-fw fa-upload"></i></a></td>
|
||||
<td><a href="{ROOT_URL}admin/products/edit/{ID}" class="btn btn-sm btn-warning"><i class="fa fa-fw fa-pencil"></i></a></td>
|
||||
<td><a href="{ROOT_URL}admin/products/delete/{ID}" class="btn btn-sm btn-danger"><i class="fa fa-fw fa-trash"></i></a></td>
|
||||
<td>
|
||||
<input type="checkbox" value="{ID}" name="MP_[]">
|
||||
</td>
|
||||
</tr>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<tr>
|
||||
<td align="center" colspan="6">
|
||||
No results to show.
|
||||
</td>
|
||||
</tr>
|
||||
{/ALT}
|
||||
</tbody>
|
||||
</table>
|
||||
<a href="{ROOT_URL}admin/products/create" class="btn btn-sm btn-primary">Create</a>
|
||||
<button name="submit" value="submit" type="submit" class="btn btn-sm btn-danger"><i class="fa fa-fw fa-trash"></i></button>
|
||||
</form>
|
||||
</div>
|
@ -1,56 +1,72 @@
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-6 col-lg-6 col-sm-offset-0 col-md-offset-3 col-lg-offset-3 top-pad" >
|
||||
<div class="card">
|
||||
<div class="card-header bg-dark">
|
||||
<h3 class="card-title">Membership Product</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class=" col-md-12 col-lg-12 ">
|
||||
<table class="table table-user-primary">
|
||||
<tbody>
|
||||
<div class="container py-4">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
{ADMIN_BREADCRUMBS}
|
||||
<div class="card shadow">
|
||||
<!-- Card Header -->
|
||||
<div class="card-header text-center bg-dark text-white">
|
||||
<h3 class="card-title mb-0">{name}</h3>
|
||||
</div>
|
||||
|
||||
<!-- Card Body -->
|
||||
<div class="card-body">
|
||||
<div class="row align-items-center">
|
||||
<!-- Log Details -->
|
||||
<table class="table table-borderless">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="left" width="200">ID:</td>
|
||||
<td align="right">{ID}</td>
|
||||
<th scope="row" class="col-3">Name</th>
|
||||
<td>{name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Time submitted:</td>
|
||||
<td align="right">{DTC}{time}{/DTC}</td>
|
||||
<th scope="row">Monthly Price</th>
|
||||
<td>{monthly_price}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>IP:</td>
|
||||
<td align="right">{ip}</td>
|
||||
<th scope="row">Yearly Price</th>
|
||||
<td>{yearly_price}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Email:</td>
|
||||
<td align="right">{email}</td>
|
||||
<th scope="row">Stripe Product</th>
|
||||
<td class="input-group mb-3">
|
||||
<input type="text" value="{stripe_product}" name="input" class="form-control" id="stripeProduct{ID}">
|
||||
<button class="btn btn-secondary" onclick="copyElementText('stripeProduct{ID}')" aria-describedby="stripeProduct{ID}">Copy</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Name</td>
|
||||
<td align="right">{name}</td>
|
||||
<th scope="row">Stripe Price Yearly</th>
|
||||
<td class="input-group mb-3">
|
||||
<input type="text" value="{stripe_price_yearly}" name="input" class="form-control" id="stripeYearly{ID}">
|
||||
<button class="btn btn-secondary" onclick="copyElementText('stripeYearly{ID}')">Copy</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" colspan="2">Feedback</td>
|
||||
<th scope="row">Stripe Price Monthly</th>
|
||||
<td class="input-group mb-3">
|
||||
<input type="text" value="{stripe_price_monthly}" name="input" class="form-control" id="stripeMonthly{ID}">
|
||||
<button class="btn btn-secondary" onclick="copyElementText('stripeMonthly{ID}')">Copy</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">{feedback}</td>
|
||||
<th scope="row">Description</th>
|
||||
<td>{description}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Admin Controls -->
|
||||
<div class="card-footer text-center">
|
||||
{ADMIN}
|
||||
<form action="{ROOT_URL}admin/feedback/delete" method="post">
|
||||
<INPUT type="hidden" name="F_" value="{ID}"/>
|
||||
<input type="hidden" name="token" value="{TOKEN}" />
|
||||
<button name="submit" value="submit" type="submit" class="btn btn-sm btn-danger"><i class="fa fa-fw fa-times"></i></button>
|
||||
<button name="submit" value="submit" type="submit" class="btn btn-sm btn-danger"><i class="fa fa-fw fa-trash"></i></button>
|
||||
</form>
|
||||
{/ADMIN}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -29,7 +29,7 @@
|
||||
</td>
|
||||
<td>
|
||||
<a href="{ROOT_URL}member/cancel/{ID}" class="btn btn-sm btn-danger">
|
||||
<i class="fa fa-fw fa-times"></i>
|
||||
<i class="fa fa-fw fa-trash"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -27,8 +27,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-footer">
|
||||
<a href="{ROOT_URL}admin/reviews/categoryEdit/{ID}" class="btn btn-md btn-warning" role="button">Edit</a>
|
||||
<a href="{ROOT_URL}admin/reviews/categoryDelete/{ID}" class="btn btn-md btn-danger" role="button">Delete</a>
|
||||
<a href="{ROOT_URL}admin/reviews/categoryEdit/{ID}" class="btn btn-md btn-warning" role="button"><i class="fa fa-fw fa-pencil"></i></a>
|
||||
<a href="{ROOT_URL}admin/reviews/categoryDelete/{ID}" class="btn btn-md btn-danger" role="button"><i class="fa fa-fw fa-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -51,17 +51,24 @@ class Suggestions extends Controller {
|
||||
Issues::add( 'error', 'Suggestion not found.' );
|
||||
return $this->index();
|
||||
}
|
||||
if ( empty( self::$comments ) ) {
|
||||
self::$comments = new CommentsModel;
|
||||
}
|
||||
|
||||
if ( Input::exists( 'contentId' ) ) {
|
||||
$this->comments( 'post', Input::post( 'contentId' ) );
|
||||
}
|
||||
|
||||
Components::set( 'CONTENT_ID', $id );
|
||||
Components::set( 'COMMENT_TYPE', 'suggestions' );
|
||||
Components::set( 'NEWCOMMENT', Views::simpleView( 'comments.create' ) );
|
||||
Components::set( 'count', self::$comments->count( 'suggestion', $id ) );
|
||||
Components::set( 'COMMENTS', Views::simpleView( 'comments.list', self::$comments->display( 10, self::$suggestions->tableName, $id ) ) );
|
||||
$plugin = new Comments;
|
||||
if ( ! $plugin->checkEnabled() ) {
|
||||
Components::set( 'NEWCOMMENT', '' );
|
||||
Components::set( 'count', '' );
|
||||
Components::set( 'COMMENTS', '' );
|
||||
} else {
|
||||
$comments = new CommentsModel;
|
||||
Components::set( 'count', $comments->count( 'suggestion', $id ) );
|
||||
Components::set( 'COMMENTS', Views::simpleView( 'comments.list', $comments->display( 10, self::$suggestions->tableName, $id ) ) );
|
||||
Components::set( 'NEWCOMMENT', Views::simpleView( 'comments.create' ) );
|
||||
}
|
||||
Views::view( 'suggestions.view', $data );
|
||||
}
|
||||
|
||||
@ -98,36 +105,40 @@ class Suggestions extends Controller {
|
||||
}
|
||||
|
||||
public function comments( $sub = null, $data = null ) {
|
||||
if ( empty( self::$comments ) ) {
|
||||
self::$comments = new CommentsModel;
|
||||
}
|
||||
$commentsPlugin = new Comments;
|
||||
if ( empty( $sub ) || empty( $data ) ) {
|
||||
Session::flash( 'error', 'Whoops, try again.' );
|
||||
Redirect::to( 'suggestions' );
|
||||
Issues::add( 'error', 'There was an issue with your request. Please check the url and try again.' );
|
||||
return $this->index();
|
||||
}
|
||||
|
||||
$plugin = new Comments;
|
||||
if ( ! $plugin->checkEnabled() ) {
|
||||
Issues::add( 'error', 'Comments are disabled.' );
|
||||
return $this->index();
|
||||
}
|
||||
|
||||
switch ( $sub ) {
|
||||
case 'post':
|
||||
$content = self::$suggestions->findById( $data );
|
||||
if ( empty( $content ) ) {
|
||||
Session::flash( 'error', 'Unknown Content.' );
|
||||
Redirect::to( 'suggestions' );
|
||||
Issues::add( 'error', 'Unknown Content.' );
|
||||
return $this->index();
|
||||
}
|
||||
return $commentsPlugin->formPost( self::$suggestions->tableName, $content, 'suggestions/view/' );
|
||||
Redirect::to( 'suggestions' );
|
||||
return $plugin->formPost( self::$suggestions->tableName, $content, 'suggestions/view/' );
|
||||
case 'edit':
|
||||
$content = self::$comments->findById( $data );
|
||||
if ( empty( $content ) ) {
|
||||
Session::flash( 'error', 'Unknown Comment.' );
|
||||
Redirect::to( 'suggestions' );
|
||||
Issues::add( 'error', 'Unknown Comment.' );
|
||||
return $this->index();
|
||||
}
|
||||
return $commentsPlugin->formEdit( self::$suggestions->tableName, $content, 'suggestions/view/' );
|
||||
return $plugin->formEdit( self::$suggestions->tableName, $content, 'suggestions/view/' );
|
||||
case 'delete':
|
||||
$content = self::$comments->findById( $data );
|
||||
if ( empty( $content ) ) {
|
||||
Session::flash( 'error', 'Unknown Comment.' );
|
||||
Redirect::to( 'suggestions' );
|
||||
Issues::add( 'error', 'Unknown Comment.' );
|
||||
return $this->index();
|
||||
}
|
||||
return $commentsPlugin->formDelete( self::$suggestions->tableName, $content, 'suggestions/view/' );
|
||||
return $plugin->formDelete( self::$suggestions->tableName, $content, 'suggestions/view/' );
|
||||
}
|
||||
}
|
||||
}
|
@ -1,22 +1,38 @@
|
||||
<form action="" method="post" class="form-horizontal">
|
||||
<div class="form-group">
|
||||
<div class="col-lg-4 col-lg-offset-4">
|
||||
<label for="title" class="col-lg-3 control-label">Title</label>
|
||||
<input type="text" class="form-check-input" name="title" id="title" value="{title}">
|
||||
</div>
|
||||
<div class="mb-4 mt-4">
|
||||
<div class="offset-md-1 col-10 py-3 context-main-bg">
|
||||
<legend class="text-center">Edit Suggestion</legend>
|
||||
<hr>
|
||||
<form action="" method="post" class="container py-4">
|
||||
<fieldset>
|
||||
<div class="mb-3 row">
|
||||
<label for="title" class="col-lg-5 col-form-label text-end">Title</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="text" class="form-control" name="title" id="title" value="{title}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="approved" class="col-lg-5 col-form-label text-end">Approved</label>
|
||||
<div class="col-lg-3">
|
||||
<div class="form-check form-switch">
|
||||
<input class="form-check-input" type="checkbox" role="switch" id="approved" value="true" name="approved">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3 row">
|
||||
<label for="suggestion" class="col-lg-5 col-form-label text-end">Suggestion:</label>
|
||||
<div class="col-lg-3">
|
||||
<textarea class="form-control" name="suggestion" maxlength="2000" rows="5" cols="50" id="suggestion">{suggestion}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Hidden Token -->
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
|
||||
<!-- Submit Button -->
|
||||
<div class="text-center">
|
||||
<button type="submit" name="submit" value="submit" class="btn btn-primary btn-lg">Save</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-lg-4 col-lg-offset-4">
|
||||
<label for="suggestion">Suggestion</label>
|
||||
<textarea class="form-control" name="suggestion" maxlength="2000" rows="10" cols="50" id="suggestion">{suggestion}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-lg-4 col-lg-offset-4">
|
||||
<input class="" type="checkbox" name="approved" id="approved" value="true" {CHECKED:approved=true}>
|
||||
<label for="approved">Approved (Publicly available)?</label>
|
||||
</div>
|
||||
</div>
|
||||
<button name="submit" value="submit" type="submit" class="btn btn-lg btn-primary center-block">Save</button>
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
</form>
|
||||
</div>
|
@ -1,56 +1,59 @@
|
||||
<legend>Suggestions</legend>
|
||||
{PAGINATION}
|
||||
<form action="{ROOT_URL}admin/suggestions/delete" method="post">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 5%">ID</th>
|
||||
<th style="width: 30%">Suggestion</th>
|
||||
<th style="width: 10%">Suggested On</th>
|
||||
<th style="width: 10%">Suggested By</th>
|
||||
<th style="width: 10%">Approved</th>
|
||||
<th style="width: 10%">Approved On</th>
|
||||
<th style="width: 10%">Approved By</th>
|
||||
<th style="width: 5%"></th>
|
||||
<th style="width: 5%"></th>
|
||||
<th style="width: 5%">
|
||||
<INPUT type="checkbox" onchange="checkAll(this)" name="check.br" value="S_[]"/>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{LOOP}
|
||||
<tr>
|
||||
<td align="center">{ID}</td>
|
||||
<td>{suggestion}</td>
|
||||
<td align="center">{DTC}{suggestedOn}{/DTC}</td>
|
||||
<td align="center">{submittedBy}</td>
|
||||
<td>{approved}</td>
|
||||
<td align="center">{DTC}{approvedOn}{/DTC}</td>
|
||||
<td align="center">{approvedByName}</td>
|
||||
<td>
|
||||
<a href="{ROOT_URL}admin/suggestions/approve/{ID}" class="btn btn-sm btn-success" role="button"><i class="fa fa-fw fa-check"></i></a>
|
||||
<a href="{ROOT_URL}admin/suggestions/reject/{ID}" class="btn btn-sm btn-danger" role="button"><i class="fa fa-fw fa-close"></i></a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="{ROOT_URL}admin/suggestions/view/{ID}" class="btn btn-sm btn-primary" role="button"><i class="fa fa-fw fa-upload"></i></a>
|
||||
<a href="{ROOT_URL}admin/suggestions/delete/{ID}" class="btn btn-sm btn-danger" role="button"><i class="fa fa-fw fa-trash"></i></a>
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" value="{ID}" name="BR_[]">
|
||||
</td>
|
||||
</tr>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<tr>
|
||||
<td align="center" colspan="6">
|
||||
No results to show.
|
||||
</td>
|
||||
</tr>
|
||||
{/ALT}
|
||||
</tbody>
|
||||
</table>
|
||||
<button name="submit" value="submit" type="submit" class="btn btn-sm btn-danger">Delete</button>
|
||||
</form>
|
||||
<br />
|
||||
<a href="{ROOT_URL}admin/suggestions/clear">clear all</a>
|
||||
<div class="context-main-bg context-main p-3">
|
||||
<legend class="text-center">Suggestions</legend>
|
||||
<hr>
|
||||
{ADMIN_BREADCRUMBS}
|
||||
<form action="{ROOT_URL}admin/suggestions/delete" method="post">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 5%">ID</th>
|
||||
<th style="width: 30%">Suggestion</th>
|
||||
<th style="width: 10%">Suggested On</th>
|
||||
<th style="width: 10%">Suggested By</th>
|
||||
<th style="width: 10%">Approved</th>
|
||||
<th style="width: 10%">Approved On</th>
|
||||
<th style="width: 10%">Approved By</th>
|
||||
<th style="width: 5%"></th>
|
||||
<th style="width: 5%"></th>
|
||||
<th style="width: 5%">
|
||||
<INPUT type="checkbox" onchange="checkAll(this)" name="check.br" value="S_[]"/>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{LOOP}
|
||||
<tr>
|
||||
<td align="center">{ID}</td>
|
||||
<td>{suggestion}</td>
|
||||
<td align="center">{DTC}{suggestedOn}{/DTC}</td>
|
||||
<td align="center">{submittedBy}</td>
|
||||
<td>{approved}</td>
|
||||
<td align="center">{DTC}{approvedOn}{/DTC}</td>
|
||||
<td align="center">{approvedByName}</td>
|
||||
<td>
|
||||
<a href="{ROOT_URL}admin/suggestions/approve/{ID}" class="btn btn-sm btn-success" role="button"><i class="fa fa-fw fa-check"></i></a>
|
||||
<a href="{ROOT_URL}admin/suggestions/reject/{ID}" class="btn btn-sm btn-danger" role="button"><i class="fa fa-fw fa-close"></i></a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="{ROOT_URL}admin/suggestions/view/{ID}" class="btn btn-sm btn-primary" role="button"><i class="fa fa-fw fa-upload"></i></a>
|
||||
<a href="{ROOT_URL}admin/suggestions/delete/{ID}" class="btn btn-sm btn-danger" role="button"><i class="fa fa-fw fa-trash"></i></a>
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" value="{ID}" name="BR_[]">
|
||||
</td>
|
||||
</tr>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<tr>
|
||||
<td align="center" colspan="6">
|
||||
No results to show.
|
||||
</td>
|
||||
</tr>
|
||||
{/ALT}
|
||||
</tbody>
|
||||
</table>
|
||||
<button name="submit" value="submit" type="submit" class="btn btn-sm btn-danger"><i class="fa fa-fw fa-trash"></i></button>
|
||||
</form>
|
||||
<br />
|
||||
<a href="{ROOT_URL}admin/suggestions/clear">clear all</a>
|
||||
</div>
|
@ -1,17 +1,14 @@
|
||||
<div class="row">
|
||||
<div class="col-lg-12 col-sm-12 blog-main">
|
||||
<div class="blog-post">
|
||||
<h2 class="blog-post-title">Suggestion</h2>
|
||||
<hr>
|
||||
<p class="blog-post-meta">{DTC date}{suggestedOn}{/DTC} by <a href="{ROOT_URL}home/profile/{author}">{submittedBy}</a></p>
|
||||
{suggestion}
|
||||
{ADMIN}
|
||||
<hr>
|
||||
<a href="{ROOT_URL}admin/suggestions/delete/{ID}" class="btn btn-md btn-danger" role="button">Delete</a>
|
||||
<a href="{ROOT_URL}admin/suggestions/edit/{ID}" class="btn btn-md btn-warning" role="button">Edit</a>
|
||||
<hr>
|
||||
{/ADMIN}
|
||||
</div><!-- /.suggestions-post -->
|
||||
{COMMENTS}
|
||||
</div><!-- /.suggestions-main -->
|
||||
</div><!-- /.row -->
|
||||
<div class="context-main-bg context-main p-3">
|
||||
<legend class="text-center">Suggestion: {title}</legend>
|
||||
<hr>
|
||||
{ADMIN_BREADCRUMBS}
|
||||
<p class="blog-post-meta">{DTC date}{suggestedOn}{/DTC} by <a href="{ROOT_URL}admin/users/view/{author}">{submittedBy}</a></p>
|
||||
{suggestion}
|
||||
{ADMIN}
|
||||
<hr>
|
||||
<a href="{ROOT_URL}admin/suggestions/edit/{ID}" class="btn btn-md btn-warning" role="button"><i class="fa fa-fw fa-pencil"></i></a>
|
||||
<a href="{ROOT_URL}admin/suggestions/delete/{ID}" class="btn btn-md btn-danger" role="button"><i class="fa fa-fw fa-trash"></i></a>
|
||||
<hr>
|
||||
{/ADMIN}
|
||||
{COMMENTS}
|
||||
</div>
|
@ -8,8 +8,8 @@
|
||||
{suggestion}
|
||||
{ADMIN}
|
||||
<hr>
|
||||
<a href="{ROOT_URL}admin/suggestions/delete/{ID}" class="btn btn-md btn-danger" role="button">Delete</a>
|
||||
<a href="{ROOT_URL}admin/suggestions/edit/{ID}" class="btn btn-md btn-warning" role="button">Edit</a>
|
||||
<a href="{ROOT_URL}admin/suggestions/edit/{ID}" class="btn btn-md btn-warning" role="button"><i class="fa fa-fw fa-pencil"></i></a>
|
||||
<a href="{ROOT_URL}admin/suggestions/delete/{ID}" class="btn btn-md btn-danger" role="button"><i class="fa fa-fw fa-trash"></i></a>
|
||||
<hr>
|
||||
{/ADMIN}
|
||||
</div><!-- /.suggestions-post -->
|
||||
|
@ -28,7 +28,7 @@ class Wip extends AdminController {
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
self::$projects = new Projects;
|
||||
self::$title = 'Admin - Projects';
|
||||
self::$title = 'Admin - WIP';
|
||||
$view = Navigation::activePageSelect( 'nav.admin', '/admin/wip' );
|
||||
Components::set( 'ADMINNAV', $view );
|
||||
}
|
||||
|
@ -1,16 +1,48 @@
|
||||
<h2>Create Project</h2>
|
||||
<form action="#" method="POST">
|
||||
<label for="title">Title:</label><br>
|
||||
<input type="text" id="title" name="title" required><br><br>
|
||||
<div class="context-main-bg context-main p-3">
|
||||
<legend class="text-center">Add WIP</legend>
|
||||
<hr>
|
||||
{ADMIN_BREADCRUMBS}
|
||||
<form method="post">
|
||||
<fieldset>
|
||||
<!-- Title -->
|
||||
<div class="mb-3 row">
|
||||
<label for="title" class="col-lg-5 col-form-label text-end">Title:</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="text" class="form-control" name="title" id="title" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label for="progress">Progress:</label><br>
|
||||
<input type="text" id="progress" name="progress" required><br><br>
|
||||
<!-- Progress -->
|
||||
<div class="mb-3 row">
|
||||
<label for="progress" class="col-lg-5 col-form-label text-end">Progress:</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="text" class="form-control" name="progress" id="progress" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label for="startDate">Start Month/Year:</label><br>
|
||||
<input type="month" id="startDate" name="startDate" required><br><br>
|
||||
<!-- Start Month/Year -->
|
||||
<div class="mb-3 row">
|
||||
<label for="startDate" class="col-lg-5 col-form-label text-end">Start Month/Year:</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="month" class="form-control" name="startDate" id="startDate" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label for="description">Description:</label><br>
|
||||
<textarea id="description" name="description" rows="20" cols="50" required></textarea><br><br>
|
||||
<!-- Description -->
|
||||
<div class="mb-3 row">
|
||||
<label for="description" class="col-lg-5 col-form-label text-end">Description:</label>
|
||||
<div class="col-lg-3">
|
||||
<textarea class="form-control" name="description" maxlength="2000" rows="5" cols="50" id="description"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="submit" name="submit" value="Submit">
|
||||
</form>
|
||||
<!-- Hidden Token -->
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
|
||||
<!-- Submit Button -->
|
||||
<div class="text-center">
|
||||
<button type="submit" name="submit" value="submit" class="btn btn-primary btn-lg">Create</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
@ -1,16 +1,48 @@
|
||||
<h2>Edit Project</h2>
|
||||
<form action="#" method="POST">
|
||||
<label for="title">Title:</label><br>
|
||||
<input type="text" id="title" name="title" value="{title}" required><br><br>
|
||||
<div class="context-main-bg context-main p-3">
|
||||
<legend class="text-center">Edit WIP</legend>
|
||||
<hr>
|
||||
{ADMIN_BREADCRUMBS}
|
||||
<form method="post">
|
||||
<fieldset>
|
||||
<!-- Title -->
|
||||
<div class="mb-3 row">
|
||||
<label for="title" class="col-lg-5 col-form-label text-end">Title:</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="text" class="form-control" name="title" id="title" value="{title}" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label for="progress">Progress:</label><br>
|
||||
<input type="text" id="progress" name="progress" value="{progress}" required><br><br>
|
||||
<!-- Progress -->
|
||||
<div class="mb-3 row">
|
||||
<label for="progress" class="col-lg-5 col-form-label text-end">Progress:</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="text" class="form-control" name="progress" id="progress" value="{progress}" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label for="startDate">Start Month/Year:</label><br>
|
||||
<input type="month" id="startDate" name="startDate" value="{startDate}" required><br><br>
|
||||
<!-- Start Month/Year -->
|
||||
<div class="mb-3 row">
|
||||
<label for="startDate" class="col-lg-5 col-form-label text-end">Start Month/Year:</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="month" class="form-control" name="startDate" id="startDate" value="{startDate}" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label for="description">Description:</label><br>
|
||||
<textarea id="description" name="description" rows="20" cols="50" required>{description}</textarea><br><br>
|
||||
<!-- Description -->
|
||||
<div class="mb-3 row">
|
||||
<label for="description" class="col-lg-5 col-form-label text-end">Description:</label>
|
||||
<div class="col-lg-3">
|
||||
<textarea class="form-control" name="description" maxlength="2000" rows="5" cols="50" id="description">{description}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="submit" name="submit" value="Submit">
|
||||
</form>
|
||||
<!-- Hidden Token -->
|
||||
<input type="hidden" name="token" value="{TOKEN}">
|
||||
|
||||
<!-- Submit Button -->
|
||||
<div class="text-center">
|
||||
<button type="submit" name="submit" value="submit" class="btn btn-primary btn-lg">Create</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
@ -1,41 +1,44 @@
|
||||
<legend>Works in Progress</legend>
|
||||
{PAGINATION}
|
||||
<form action="{ROOT_URL}admin/wip/delete" method="post">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 30%">Title</th>
|
||||
<th style="width: 20%">Progress</th>
|
||||
<th style="width: 20%">Start Date</th>
|
||||
<th style="width: 10%"></th>
|
||||
<th style="width: 10%"></th>
|
||||
<th style="width: 10%">
|
||||
<INPUT type="checkbox" onchange="checkAll(this)" name="check.b" value="P_[]"/>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{LOOP}
|
||||
<tr>
|
||||
<td><a href="{ROOT_URL}admin/wip/view/{ID}">{title}</a></td>
|
||||
<td>{progress}</td>
|
||||
<td>{startDate}</td>
|
||||
<td><a href="{ROOT_URL}admin/wip/edit/{ID}" class="btn btn-sm btn-warning" role="button"><i class="fa fa-fw fa-pencil"></i></a></td>
|
||||
<td><a href="{ROOT_URL}admin/wip/delete/{ID}" class="btn btn-sm btn-danger" role="button"><i class="fa fa-fw fa-trash"></i></a></td>
|
||||
<td>
|
||||
<input type="checkbox" value="{ID}" name="P_[]">
|
||||
</td>
|
||||
</tr>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<tr>
|
||||
<td colspan="7">
|
||||
No results to show.
|
||||
</td>
|
||||
</tr>
|
||||
{/ALT}
|
||||
</tbody>
|
||||
</table>
|
||||
<a href="{ROOT_URL}admin/wip/create" class="btn btn-sm btn-primary" role="button">Create</a>
|
||||
<button name="submit" value="submit" type="submit" class="btn btn-sm btn-danger">Delete</button>
|
||||
</form>
|
||||
<div class="context-main-bg context-main p-3">
|
||||
<legend class="text-center">Works in Progress</legend>
|
||||
<hr>
|
||||
{ADMIN_BREADCRUMBS}
|
||||
<form action="{ROOT_URL}admin/wip/delete" method="post">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" style="width: 30%">Title</th>
|
||||
<th scope="col" style="width: 20%">Progress</th>
|
||||
<th scope="col" style="width: 20%">Start Date</th>
|
||||
<th scope="col" style="width: 10%"></th>
|
||||
<th scope="col" style="width: 10%"></th>
|
||||
<th scope="col" style="width: 10%">
|
||||
<INPUT type="checkbox" onchange="checkAll(this)" name="check.b" value="P_[]"/>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{LOOP}
|
||||
<tr>
|
||||
<td><a href="{ROOT_URL}admin/wip/view/{ID}">{title}</a></td>
|
||||
<td>{progress}</td>
|
||||
<td>{startDate}</td>
|
||||
<td><a href="{ROOT_URL}admin/wip/edit/{ID}" class="btn btn-sm btn-warning" role="button"><i class="fa fa-fw fa-pencil"></i></a></td>
|
||||
<td><a href="{ROOT_URL}admin/wip/delete/{ID}" class="btn btn-sm btn-danger" role="button"><i class="fa fa-fw fa-trash"></i></a></td>
|
||||
<td>
|
||||
<input type="checkbox" value="{ID}" name="P_[]">
|
||||
</td>
|
||||
</tr>
|
||||
{/LOOP}
|
||||
{ALT}
|
||||
<tr>
|
||||
<td colspan="7">
|
||||
No results to show.
|
||||
</td>
|
||||
</tr>
|
||||
{/ALT}
|
||||
</tbody>
|
||||
</table>
|
||||
<a href="{ROOT_URL}admin/wip/create" class="btn btn-sm btn-primary" role="button">Create</a>
|
||||
<button name="submit" value="submit" type="submit" class="btn btn-sm btn-danger"><i class="fa fa-fw fa-trash"></i></button>
|
||||
</form>
|
||||
</div>
|
@ -1,8 +1,46 @@
|
||||
<legend>WIP</legend>
|
||||
<div class="wip-project">
|
||||
<h3 class="wip-project-title">{name}</h3>
|
||||
<p><b>{position}</b> from <i>{prettyStart}</i> to <i>{prettyEnd}</i></p>
|
||||
<div class="well">
|
||||
{details}
|
||||
<div class="container py-4">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
{ADMIN_BREADCRUMBS}
|
||||
<div class="card shadow">
|
||||
<!-- Card Header -->
|
||||
<div class="card-header text-center bg-dark text-white">
|
||||
<h3 class="card-title mb-0">{title}</h3>
|
||||
</div>
|
||||
|
||||
<!-- Card Body -->
|
||||
<div class="card-body">
|
||||
<div class="row align-items-center">
|
||||
<!-- Details -->
|
||||
<table class="table table-borderless">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row" class="col-3">Title</th>
|
||||
<td>{title}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Progress</th>
|
||||
<td>{progress}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Started:</th>
|
||||
<td>{DTC}{startDate}{/DTC}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">Description</th>
|
||||
<td>{description}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Admin Controls -->
|
||||
<div class="card-footer text-center">
|
||||
<a href="{ROOT_URL}admin/wip/edit/{ID}" class="btn btn-sm btn-warning"><i class="fa fa-fw fa-pencil"></i></a>
|
||||
<a href="{ROOT_URL}admin/wip/delete/{ID}" class="btn btn-sm btn-danger"><i class="fa fa-fw fa-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -137,19 +137,15 @@ class TheTempusProject extends Bedrock {
|
||||
];
|
||||
public $main_links = [
|
||||
[
|
||||
'text' => 'Home',
|
||||
'text' => 'About',
|
||||
'url' => '{ROOT_URL}home/index',
|
||||
'filter' => 'notloggedin',
|
||||
],
|
||||
[
|
||||
'text' => 'Admin',
|
||||
'url' => '{ROOT_URL}admin/index',
|
||||
'filter' => 'admin',
|
||||
],
|
||||
[
|
||||
'text' => 'Extensions',
|
||||
'url' => '{ROOT_URL}extensions/index',
|
||||
// 'filter' => 'notloggedin',
|
||||
],
|
||||
];
|
||||
public $filters = [
|
||||
[
|
||||
|
Reference in New Issue
Block a user