plugin fixes

This commit is contained in:
Joey Kimsey
2024-12-09 19:59:59 -05:00
parent 66383d8d96
commit b575fe82aa
19 changed files with 151 additions and 58 deletions

View File

@ -0,0 +1,71 @@
<?php
/**
* app/plugins/bookmarks/controllers/api/bookmark_folders.php
*
* This is the api bookmark folders controller.
*
* @version 3.0
* @author Joey Kimsey <Joey@thetempusproject.com>
* @link https://TheTempusProject.com
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
*/
namespace TheTempusProject\Controllers\Api;
use TheTempusProject\Models\User;
use TheTempusProject\Classes\ApiController;
use TheTempusProject\Houdini\Classes\Views;
use TheTempusProject\Canary\Bin\Canary as Debug;
use TheTempusProject\Bedrock\Functions\Input;
use TheTempusProject\Models\Folders;
class BookmarkFolders extends ApiController {
protected static $folders;
public function __construct() {
parent::__construct();
self::$folders = new Folders;
}
public function create() {
header('Access-Control-Allow-Origin: *');
$user = self::$authToken->createdBy;
$payload = @file_get_contents('php://input');
$payload = json_decode( $payload, true );
$result = self::$folders->create(
$payload['name'],
$payload['folder'] ?? 0,
$payload['notes'] ?? '',
$payload['color'] ?? 'default',
$payload['privacy'] ?? 'private',
$user
);
if ( ! $result ) {
$responseType = 'error';
$response = 'There was an error creating your folder.';
} else {
$responseType = 'success';
$response = 'success';
}
Views::view( 'api.response', ['response' => json_encode( [ $responseType => $response ], true )]);
}
public function list( $id = '' ) {
header('Access-Control-Allow-Origin: *');
$user = self::$authToken->createdBy;
$folders = self::$folders->bySpecificUser( $user );
if ( ! $folders ) {
$responseType = 'error';
$response = 'There was an error creating your folder.';
} else {
$responseType = 'folders';
$response = $folders;
}
Views::view( 'api.response', ['response' => json_encode( [ $responseType => $response ], true )]);
}
}

View File

@ -33,25 +33,22 @@ class Bookmarks extends ApiController {
$payload = @file_get_contents('php://input');
$payload = json_decode( $payload, true );
Debug::error($payload['name']);
$result = self::$bookmarks->create(
$payload['name'],
$payload['url'],
0,
$payload['notes'],
'default',
'private',
'external',
$user
$payload['folder'] ?? 0,
$payload['notes'] ?? '',
$payload['color'] ?? 'default',
$payload['privacy'] ?? 'private',
);
if ( ! $result ) {
$responseType = 'error';
$response = 'There was an error creating your bookmark.';
$response = 'There was an error creating your folder.';
} else {
$responseType = 'success';
$response = 'success';
$responseType = 'data';
$response = $result;
}
Views::view( 'api.response', ['response' => json_encode( [ $responseType => $response ], true )]);
}

View File

@ -320,34 +320,34 @@ class Bookmarks extends DatabaseModel {
}
if ( empty( $instance->hiddenAt ) ) {
$instance->hideBtn = '
<a href="{ROOT_URL}bookmarks/hideBookmark/'.$instance->ID.'" class="btn btn-sm btn-warning" role="button">
<a href="{ROOT_URL}bookmarks/hideBookmark/'.$instance->ID.'" class="btn btn-sm btn-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" role="button">
<a href="{ROOT_URL}bookmarks/showBookmark/'.$instance->ID.'" class="btn btn-sm btn-default">
<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" role="button">
<a href="{ROOT_URL}bookmarks/archiveBookmark/'.$instance->ID.'" class="btn btn-sm btn-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" role="button">
<a href="{ROOT_URL}bookmarks/unarchiveBookmark/'.$instance->ID.'" class="btn btn-sm btn-default">
<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" role="button">
<a href="{ROOT_URL}bookmarks/refreshBookmark/'.$instance->ID.'" class="btn btn-sm btn-danger">
<i class="fa fa-fw fa-refresh"></i>
</a>';
} else {
$instance->refreshBtn = '
<a href="{ROOT_URL}bookmarks/refreshBookmark/'.$instance->ID.'" class="btn btn-sm btn-success" role="button">
<a href="{ROOT_URL}bookmarks/refreshBookmark/'.$instance->ID.'" class="btn btn-sm btn-success">
<i class="fa fa-fw fa-refresh"></i>
</a>';
}

View File

@ -38,7 +38,10 @@ class Folders extends DatabaseModel {
parent::__construct();
}
public function create( $title, $folderID = 0, $description = '', $color = 'default', $privacy = 'private' ) {
public function create( $title, $folderID = 0, $description = '', $color = 'default', $privacy = 'private', $user = null ) {
if ( empty( $user ) ) {
$user = App::$activeUser->ID;
}
if ( ! Check::dataTitle( $title ) ) {
Debug::info( 'Folders: illegal title.' );
return false;
@ -48,9 +51,10 @@ class Folders extends DatabaseModel {
'description' => $description,
'color' => $color,
'privacy' => $privacy,
'createdBy' => App::$activeUser->ID,
'createdBy' => $user,
'createdAt' => time(),
];
if ( !empty( $folderID ) ) {
$fields['folderID'] = $folderID;
}
@ -102,6 +106,20 @@ class Folders extends DatabaseModel {
return $this->filter( $folders->results() );
}
public function bySpecificUser( $userID, $limit = null ) {
$whereClause = ['createdBy', '=', $userID];
if ( empty( $limit ) ) {
$folders = self::$db->get( $this->tableName, $whereClause );
} else {
$folders = self::$db->get( $this->tableName, $whereClause, 'ID', 'DESC', [0, $limit] );
}
if ( !$folders->count() ) {
Debug::info( 'No Folders found.' );
return false;
}
return $this->filter( $folders->results() );
}
public function getName( $id ) {
$folder = self::findById( $id );
if (false == $folder) {

View File

@ -13,16 +13,16 @@
{LOOP}
<tr>
<td style="text-align: center;">
<a href="{url}" role="button">
<a href="{url}">
{title}
</a>
</td>
<td style="text-align: center;">
{privacy}
</td>
<td><a href="{ROOT_URL}bookmarks/bookmark/{ID}" class="btn btn-sm btn-primary" role="button"><i class="fa fa-fw fa-upload"></i></a></td>
<td><a href="{ROOT_URL}bookmarks/editBookmark/{ID}" class="btn btn-sm btn-warning" role="button"><i class="fa fa-fw fa-pencil-square"></i></a></td>
<td><a href="{ROOT_URL}bookmarks/deleteBookmark/{ID}" class="btn btn-sm btn-danger" role="button"><i class="fa fa-fw fa-trash"></i></a></td>
<td><a href="{ROOT_URL}bookmarks/bookmark/{ID}" class="btn btn-sm btn-primary"><i class="fa fa-fw fa-upload"></i></a></td>
<td><a href="{ROOT_URL}bookmarks/editBookmark/{ID}" class="btn btn-sm btn-warning"><i class="fa fa-fw fa-pencil-square"></i></a></td>
<td><a href="{ROOT_URL}bookmarks/deleteBookmark/{ID}" class="btn btn-sm btn-danger"><i class="fa fa-fw fa-trash"></i></a></td>
</tr>
{/LOOP}
{ALT}
@ -34,4 +34,4 @@
{/ALT}
</tbody>
</table>
<a href="{ROOT_URL}bookmarks/createBookmark" class="btn btn-sm btn-primary" role="button">Create</a>
<a href="{ROOT_URL}bookmarks/createBookmark" class="btn btn-sm btn-primary">Create</a>

View File

@ -76,8 +76,8 @@
{refreshBtn}
{hideBtn}
{archiveBtn}
<a href="{ROOT_URL}bookmarks/editBookmark/{ID}" class="btn btn-sm btn-warning" role="button"><i class="fa fa-fw fa-pencil-square"></i></a>
<a href="{ROOT_URL}bookmarks/deleteBookmark/{ID}" class="btn btn-sm btn-danger" role="button"><i class="fa fa-fw fa-trash"></i></a>
<a href="{ROOT_URL}bookmarks/editBookmark/{ID}" class="btn btn-sm btn-warning"><i class="fa fa-fw fa-pencil-square"></i></a>
<a href="{ROOT_URL}bookmarks/deleteBookmark/{ID}" class="btn btn-sm btn-danger"><i class="fa fa-fw fa-trash"></i></a>
</div>
</div>
</div>

View File

@ -1,5 +1,5 @@
<div class="card panel-{color}">
<div class="card-header" data-target="#Collapse{ID}" data-toggle="collapse" aria-expanded="true" aria-controls="#Collapse{ID}">
<div class="card-header" data-bs-target="#Collapse{ID}" data-bs-toggle="collapse" aria-expanded="true" aria-controls="#Collapse{ID}">
{title}
</div>
<div id="Collapse{ID}" class="panel-collapse collapse in" style="width:100%; position: relative;" role="tabpanel" aria-expanded="true">
@ -9,12 +9,12 @@
</ul>
</div>
<div class="card-footer">
<a href="{ROOT_URL}bookmarks/createBookmark/{ID}" class="btn btn-sm btn-success" role="button"><i class="fa fa-fw fa-plus"></i></a></td>
<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="float-right">
<a href="{ROOT_URL}bookmarks/bookmarks/{ID}" class="btn btn-sm btn-primary" role="button"><i class="fa fa-fw fa-list"></i></a>
<a href="{ROOT_URL}bookmarks/folders/{ID}" class="btn btn-sm btn-primary" role="button"><i class="fa fa-fw fa-info-circle"></i></a></td>
<a href="{ROOT_URL}bookmarks/editFolder/{ID}" class="btn btn-sm btn-warning" role="button"><i class="fa fa-fw fa-pencil-square"></i></a></td>
<a href="{ROOT_URL}bookmarks/deleteFolder/{ID}" class="btn btn-sm btn-danger" role="button"><i class="fa fa-fw fa-trash"></i></a></td>
<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/editFolder/{ID}" class="btn btn-sm btn-warning"><i class="fa fa-fw fa-pencil-square"></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>
</div>
</div>

View File

@ -1,13 +1,13 @@
{LOOP}
<li class="list-group-item list-group-item-{color}">
<a href="{ROOT_URL}bookmarks/bookmarks/{ID}" class="btn btn-sm" role="button">{iconHtml}</a>
<a href="{ROOT_URL}bookmarks/bookmarks/{ID}" class="btn btn-sm">{iconHtml}</a>
<a href="{url}" class="list-group"> {title}</a>
<span class="float-right">
{hideBtn}
{archiveBtn}
<a href="{ROOT_URL}bookmarks/editBookmark/{ID}" class="btn btn-sm btn-warning" role="button"><i class="fa fa-fw fa-pencil-square"></i></a>
<a href="{ROOT_URL}bookmarks/deleteBookmark/{ID}" class="btn btn-sm btn-danger" role="button"><i class="fa fa-fw fa-trash"></i></a>
<a href="{ROOT_URL}bookmarks/editBookmark/{ID}" class="btn btn-sm btn-warning"><i class="fa fa-fw fa-pencil-square"></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}

View File

@ -16,9 +16,9 @@
<td align="center">{title}</td>
<td align="center">{privacy}</td>
<td>{description}</td>
<td><a href="{ROOT_URL}bookmarks/folders/{ID}" class="btn btn-sm btn-primary" role="button"><i class="fa fa-fw fa-info-circle"></i></a></td>
<td><a href="{ROOT_URL}bookmarks/editFolder/{ID}" class="btn btn-sm btn-warning" role="button"><i class="fa fa-fw fa-pencil-square"></i></a></td>
<td><a href="{ROOT_URL}bookmarks/deleteFolder/{ID}" class="btn btn-sm btn-danger" role="button"><i class="fa fa-fw fa-trash"></i></a></td>
<td><a href="{ROOT_URL}bookmarks/folders/{ID}" class="btn btn-sm btn-primary"><i class="fa fa-fw fa-info-circle"></i></a></td>
<td><a href="{ROOT_URL}bookmarks/editFolder/{ID}" class="btn btn-sm btn-warning"><i class="fa fa-fw fa-pencil-square"></i></a></td>
<td><a href="{ROOT_URL}bookmarks/deleteFolder/{ID}" class="btn btn-sm btn-danger"><i class="fa fa-fw fa-trash"></i></a></td>
</tr>
{/LOOP}
{ALT}
@ -30,4 +30,4 @@
{/ALT}
</tbody>
</table>
<a href="{ROOT_URL}bookmarks/createFolder" class="btn btn-sm btn-primary" role="button">Create</a>
<a href="{ROOT_URL}bookmarks/createFolder" class="btn btn-sm btn-primary">Create</a>

View File

@ -38,9 +38,9 @@
</div>
</div>
<div class="card-footer">
<a href="{ROOT_URL}bookmarks/bookmarks/{ID}" class="btn btn-sm btn-primary" role="button"><i class="fa fa-fw fa-list"></i></a>
<a href="{ROOT_URL}bookmarks/editFolder/{ID}" class="btn btn-sm btn-warning" role="button"><i class="fa fa-fw fa-pencil-square"></i></a>
<a href="{ROOT_URL}bookmarks/deleteFolder/{ID}" class="btn btn-sm btn-danger" role="button"><i class="fa fa-fw fa-trash"></i></a>
<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/editFolder/{ID}" class="btn btn-sm btn-warning"><i class="fa fa-fw fa-pencil-square"></i></a>
<a href="{ROOT_URL}bookmarks/deleteFolder/{ID}" class="btn btn-sm btn-danger"><i class="fa fa-fw fa-trash"></i></a>
</div>
</div>
</div>