codecanyon integration
This commit is contained in:
parent
a35506db1b
commit
d81ba5d5fb
@ -20,7 +20,7 @@ class Validator
|
|||||||
* @param array $hits
|
* @param array $hits
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
private static function textHit($string, $exclude = "")
|
public static function textHit($string, $exclude = "")
|
||||||
{
|
{
|
||||||
if (empty($exclude)) return false;
|
if (empty($exclude)) return false;
|
||||||
if (is_array($exclude)) {
|
if (is_array($exclude)) {
|
||||||
|
118
system/controllers/codecanyon.php
Normal file
118
system/controllers/codecanyon.php
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* PHP Mikrotik Billing (https://github.com/hotspotbilling/phpnuxbill/)
|
||||||
|
* by https://t.me/ibnux
|
||||||
|
**/
|
||||||
|
|
||||||
|
_admin();
|
||||||
|
$ui->assign('_title', $_L['Code Canyon']);
|
||||||
|
$ui->assign('_system_menu', 'settings');
|
||||||
|
|
||||||
|
$plugin_repository = 'https://hotspotbilling.github.io/Plugin-Repository/repository.json';
|
||||||
|
|
||||||
|
$action = $routes['1'];
|
||||||
|
$admin = Admin::_info();
|
||||||
|
$ui->assign('_admin', $admin);
|
||||||
|
$cache = File::pathFixer('system/cache/codecanyon.json');
|
||||||
|
|
||||||
|
if ($admin['user_type'] != 'Admin') {
|
||||||
|
r2(U . "dashboard", 'e', $_L['Do_Not_Access']);
|
||||||
|
}
|
||||||
|
if (empty($config['envato_token'])) {
|
||||||
|
r2(U . 'settings/app', 'w', '<a href="' . U . 'settings/app#envato' . '">Envato Personal Access Token</a> is not set');
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ($action) {
|
||||||
|
|
||||||
|
case 'install':
|
||||||
|
if (!is_writeable(File::pathFixer('system/cache/'))) {
|
||||||
|
r2(U . "codecanyon", 'e', 'Folder system/cache/ is not writable');
|
||||||
|
}
|
||||||
|
if (!is_writeable(File::pathFixer('system/plugin/'))) {
|
||||||
|
r2(U . "codecanyon", 'e', 'Folder system/plugin/ is not writable');
|
||||||
|
}
|
||||||
|
if (!is_writeable(File::pathFixer('system/paymentgateway/'))) {
|
||||||
|
r2(U . "codecanyon", 'e', 'Folder system/paymentgateway/ is not writable');
|
||||||
|
}
|
||||||
|
set_time_limit(-1);
|
||||||
|
$item_id = $routes['2'];
|
||||||
|
$tipe = $routes['3'];
|
||||||
|
$result = Http::getData('https://api.envato.com/v3/market/buyer/download?item_id=' . $item_id, ['Authorization: Bearer ' . $config['envato_token']]);
|
||||||
|
$json = json_decode($result, true);
|
||||||
|
if (!isset($json['download_url'])) {
|
||||||
|
r2(U . 'codecanyon', 'e', 'Failed to get download url. ' . $json['description']);
|
||||||
|
}
|
||||||
|
$file = File::pathFixer('system/cache/codecanyon/');
|
||||||
|
if(!file_exists($file)){
|
||||||
|
mkdir($file);
|
||||||
|
}
|
||||||
|
$file .= $item_id . '.zip';
|
||||||
|
if (file_exists($file))
|
||||||
|
unlink($file);
|
||||||
|
$fp = fopen($file, 'w+');
|
||||||
|
$ch = curl_init($json['download_url']);
|
||||||
|
curl_setopt($ch, CURLOPT_POST, 0);
|
||||||
|
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
|
||||||
|
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
|
||||||
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||||
|
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
|
||||||
|
curl_setopt($ch, CURLOPT_FILE, $fp);
|
||||||
|
curl_exec($ch);
|
||||||
|
curl_close($ch);
|
||||||
|
fclose($fp);
|
||||||
|
$zip = new ZipArchive();
|
||||||
|
$zip->open($file);
|
||||||
|
$zip->extractTo(File::pathFixer('system/cache/codecanyon/'));
|
||||||
|
$zip->close();
|
||||||
|
die($json['download_url']);
|
||||||
|
case 'reload':
|
||||||
|
if (file_exists($cache)) unlink($cache);
|
||||||
|
default:
|
||||||
|
if (class_exists('ZipArchive')) {
|
||||||
|
$zipExt = true;
|
||||||
|
} else {
|
||||||
|
$zipExt = false;
|
||||||
|
}
|
||||||
|
$ui->assign('zipExt', $zipExt);
|
||||||
|
|
||||||
|
if (file_exists($cache) && time() - filemtime($cache) < (24 * 60 * 60)) {
|
||||||
|
$txt = file_get_contents($cache);
|
||||||
|
$plugins = json_decode($txt, true);
|
||||||
|
$ui->assign('chached_until', date($config['date_format'] . ' H:i', filemtime($cache)+(24 * 60 * 60)));
|
||||||
|
if (count($plugins) == 0) {
|
||||||
|
unlink($cache);
|
||||||
|
r2(U . 'codecanyon');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$plugins = [];
|
||||||
|
$page = _get('page', 1);
|
||||||
|
back:
|
||||||
|
$result = Http::getData('https://api.envato.com/v3/market/buyer/list-purchases?&page=' . $page, ['Authorization: Bearer ' . $config['envato_token']]);
|
||||||
|
$items = json_decode($result, true);
|
||||||
|
if ($items && count($items['results']) > 0) {
|
||||||
|
foreach ($items['results'] as $item) {
|
||||||
|
$name = strtolower($item['item']['name']);
|
||||||
|
//if(strpos($name,'phpnuxbill') !== false){
|
||||||
|
if (strpos($name, 'wordpress') !== false) {
|
||||||
|
//if(strpos($name,'plugin') !== false){
|
||||||
|
if (strpos($name, 'theme') !== false) {
|
||||||
|
$item['type'] = '1';
|
||||||
|
} else if (strpos($name, 'payment gateway') !== false) {
|
||||||
|
$item['type'] = '2';
|
||||||
|
}
|
||||||
|
if (in_array($item['type'], [1, 2])) {
|
||||||
|
$plugins[] = $item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$page++;
|
||||||
|
goto back;
|
||||||
|
}
|
||||||
|
file_put_contents($cache, json_encode($plugins));
|
||||||
|
if (file_exists($cache)){
|
||||||
|
$ui->assign('chached_until', date($config['date_format'] . ' H:i', filemtime($cache)+(24 * 60 * 60)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$ui->assign('plugins', $plugins);
|
||||||
|
$ui->display('codecanyon.tpl');
|
||||||
|
}
|
@ -418,3 +418,9 @@ $_L['Voucher_activation_success_now_you_can_login'] = 'Voucher activation succes
|
|||||||
$_L['Client_Can_Purchase'] = 'Client Can Purchase';
|
$_L['Client_Can_Purchase'] = 'Client Can Purchase';
|
||||||
$_L['Buy_this_your_active_package_will_be_overwritten'] = 'Buy this? your active package will be overwritten';
|
$_L['Buy_this_your_active_package_will_be_overwritten'] = 'Buy this? your active package will be overwritten';
|
||||||
$_L['Pay_this_with_Balance_your_active_package_will_be_overwritten'] = 'Pay this with Balance? your active package will be overwritten';
|
$_L['Pay_this_with_Balance_your_active_package_will_be_overwritten'] = 'Pay this with Balance? your active package will be overwritten';
|
||||||
|
$_L['Buy_this_your_active_package_will_be_overwrite'] = 'Buy this? your active package will be overwrite';
|
||||||
|
$_L['Buy_this_your_active_package_will_be_overwrite'] = 'Buy this? your active package will be overwrite';
|
||||||
|
$_L['Buy_this_your_active_package_will_be_overwrite'] = 'Buy this? your active package will be overwrite';
|
||||||
|
$_L['Buy_this_your_active_package_will_be_overwrite'] = 'Buy this? your active package will be overwrite';
|
||||||
|
$_L['Buy_this_your_active_package_will_be_overwrite'] = 'Buy this? your active package will be overwrite';
|
||||||
|
$_L['Buy_this_your_active_package_will_be_overwrite'] = 'Buy this? your active package will be overwrite';
|
||||||
|
@ -413,6 +413,31 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="panel-heading" id="envato">
|
||||||
|
<div class="btn-group pull-right">
|
||||||
|
<button class="btn btn-primary btn-xs" title="save" type="submit"><span
|
||||||
|
class="glyphicon glyphicon-floppy-disk" aria-hidden="true"></span></button>
|
||||||
|
</div>
|
||||||
|
Envato / Codecanyon
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-md-2 control-label">Envato Personal Token</label>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<input type="text" class="form-control" id="envato_token" name="envato_token"
|
||||||
|
value="{$_c['envato_token']}" placeholder="BldWuBsxxxxxxxxxxxPDzPozHAPui">
|
||||||
|
</div>
|
||||||
|
<span class="help-block col-md-4"><a href="https://build.envato.com/create-token/" target="_blank">Create Token</a></span>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-md-offset-2 col-md-8" style="text-align: left;">Envato Permission<br>
|
||||||
|
- View and search Envato sites<br>
|
||||||
|
- Download the user's purchased items<br>
|
||||||
|
- List purchases the user has made<br><br>
|
||||||
|
<a href="https://codecanyon.net/category/php-scripts?term=phpnuxbill" target="_blank" class="btn btn-xs btn-primary">View MarketPlace</a>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
|
50
ui/ui/codecanyon.tpl
Normal file
50
ui/ui/codecanyon.tpl
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
{include file="sections/header.tpl"}
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<div class="panel panel-primary panel-hovered">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<div class="btn-group pull-right">
|
||||||
|
<a class="btn btn-danger btn-xs" href="https://codecanyon.net/category/php-scripts?term=phpnuxbill" target="_blank">Buy Plugin</a>
|
||||||
|
</div>
|
||||||
|
Plugin Purcashed
|
||||||
|
</div>
|
||||||
|
<div class="panel-body row">
|
||||||
|
{if Lang::arrayCount($plugins) > 0}
|
||||||
|
{foreach $plugins as $plugin}
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="box box-hovered mb20 box-primary">
|
||||||
|
<div class="box-header">
|
||||||
|
<h3 class="box-title text1line">{$plugin['item']['name']}</h3>
|
||||||
|
</div>
|
||||||
|
<div class="box-body"><small><i>@{$plugin['item']['author_username']} • Last update:
|
||||||
|
{Lang::dateFormat($plugin['item']['updated_at'])}</i></small></div>
|
||||||
|
<div class="box-footer ">
|
||||||
|
<div class="btn-group btn-group-justified" role="group" aria-label="...">
|
||||||
|
<a href="{$plugin['item']['author_url']}" target="_blank" class="btn btn-primary"><i
|
||||||
|
class="ion ion-chatboxes"></i> Author</a>
|
||||||
|
<a href="{$plugin['item']['url']}" target="_blank" class="btn btn-success"><i
|
||||||
|
class="ion ion-chatboxes"></i> Product</a>
|
||||||
|
<a {if $zipExt } href="{$_url}codecanyon/install/{$plugin['item']['id']}/{$plugin['type']}"
|
||||||
|
onclick="return confirm('Installing plugin will take some time to complete, do not close the page while it loading to install the plugin')"
|
||||||
|
{else} href="#" onclick="alert('PHP ZIP extension is not available')"
|
||||||
|
{/if}
|
||||||
|
class="btn btn-danger"><i class="ion ion-chatboxes"></i> Install</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/foreach}
|
||||||
|
{else}
|
||||||
|
<div class="col-md-12">
|
||||||
|
<div class="alert alert-info">
|
||||||
|
<i class="fa fa-info-circle"></i> No plugins purcashed yet.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
<div class="panel-footer">
|
||||||
|
Cached Until {$chached_until} <a href="{$_url}codecanyon/reload">Force reload</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{include file="sections/footer.tpl"}
|
@ -8,19 +8,21 @@
|
|||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<div class="box box-hovered mb20 box-primary">
|
<div class="box box-hovered mb20 box-primary">
|
||||||
<div class="box-header">
|
<div class="box-header">
|
||||||
<h3 class="box-title">{$plugin['name']}</h3>
|
<h3 class="box-title text1line">{$plugin['name']}</h3>
|
||||||
|
</div>
|
||||||
|
<div class="box-body" style="overflow-y: scroll;">
|
||||||
|
<div style="max-height: 50px; min-height: 50px;">{$plugin['description']}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="box-body">{$plugin['description']}<br><small><i>@{$plugin['author']} Last update: {$plugin['last_update']}</i></small></div>
|
|
||||||
<div class="box-footer ">
|
<div class="box-footer ">
|
||||||
|
<center><small><i>@{$plugin['author']} Last update: {$plugin['last_update']}</i></small></center>
|
||||||
<div class="btn-group btn-group-justified" role="group" aria-label="...">
|
<div class="btn-group btn-group-justified" role="group" aria-label="...">
|
||||||
<a href="{$plugin['url']}" target="_blank"
|
<a href="{$plugin['url']}" target="_blank" class="btn btn-primary"><i
|
||||||
class="btn btn-primary"><i class="ion ion-chatboxes"></i> Website</a>
|
class="ion ion-chatboxes"></i> Website</a>
|
||||||
<a href="{$plugin['github']}" target="_blank"
|
<a href="{$plugin['github']}" target="_blank" class="btn btn-success"><i
|
||||||
class="btn btn-success"><i class="ion ion-chatboxes"></i> Github</a>
|
class="ion ion-chatboxes"></i> Github</a>
|
||||||
<a {if $zipExt }
|
<a {if $zipExt } href="{$_url}pluginmanager/install/plugin/{$plugin['id']}"
|
||||||
href="{$_url}pluginmanager/install/plugin/{$plugin['id']}" onclick="return confirm('Installing plugin will take some time to complete, do not close the page while it loading to install the plugin')"
|
onclick="return confirm('Installing plugin will take some time to complete, do not close the page while it loading to install the plugin')"
|
||||||
{else}
|
{else} href="#" onclick="alert('PHP ZIP extension is not available')"
|
||||||
href="#" onclick="alert('PHP ZIP extension is not available')"
|
|
||||||
{/if}
|
{/if}
|
||||||
class="btn btn-warning"><i class="ion ion-chatboxes"></i> Install</a>
|
class="btn btn-warning"><i class="ion ion-chatboxes"></i> Install</a>
|
||||||
</div>
|
</div>
|
||||||
@ -37,19 +39,21 @@
|
|||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<div class="box box-hovered mb20 box-primary">
|
<div class="box box-hovered mb20 box-primary">
|
||||||
<div class="box-header">
|
<div class="box-header">
|
||||||
<h3 class="box-title">{$pg['name']}</h3>
|
<h3 class="box-title text1line">{$pg['name']}</h3>
|
||||||
|
</div>
|
||||||
|
<div class="box-body" style="overflow-y: scroll;">
|
||||||
|
<div style="max-height: 50px; min-height: 50px;">{$pg['description']}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="box-body">{$pg['description']}<br><small><i>@{$pg['author']} Last update: {$pg['last_update']}</i></small></div>
|
|
||||||
<div class="box-footer ">
|
<div class="box-footer ">
|
||||||
|
<center><small><i>@{$pg['author']} Last update: {$pg['last_update']}</i></small></center>
|
||||||
<div class="btn-group btn-group-justified" role="group" aria-label="...">
|
<div class="btn-group btn-group-justified" role="group" aria-label="...">
|
||||||
<a href="{$pg['url']}" target="_blank"
|
<a href="{$pg['url']}" target="_blank" class="btn btn-primary"><i
|
||||||
class="btn btn-primary"><i class="ion ion-chatboxes"></i> Website</a>
|
class="ion ion-chatboxes"></i> Website</a>
|
||||||
<a href="{$pg['github']}" target="_blank"
|
<a href="{$pg['github']}" target="_blank" class="btn btn-success"><i
|
||||||
class="btn btn-success"><i class="ion ion-chatboxes"></i> Github</a>
|
class="ion ion-chatboxes"></i> Github</a>
|
||||||
<a {if $zipExt }
|
<a {if $zipExt } href="{$_url}pluginmanager/install/payment/{$pg['id']}"
|
||||||
href="{$_url}pluginmanager/install/payment/{$pg['id']}" onclick="return confirm('Installing plugin will take some time to complete, do not close the page while it loading to install the plugin')"
|
onclick="return confirm('Installing plugin will take some time to complete, do not close the page while it loading to install the plugin')"
|
||||||
{else}
|
{else} href="#" onclick="alert('PHP ZIP extension is not available')"
|
||||||
href="#" onclick="alert('PHP ZIP extension is not available')"
|
|
||||||
{/if}
|
{/if}
|
||||||
class="btn btn-warning"><i class="ion ion-chatboxes"></i> Install</a>
|
class="btn btn-warning"><i class="ion ion-chatboxes"></i> Install</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -30,6 +30,23 @@
|
|||||||
.select2-container .select2-selection--single .select2-selection__rendered {
|
.select2-container .select2-selection--single .select2-selection__rendered {
|
||||||
margin-top: 0px !important;
|
margin-top: 0px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (min-width: 768px) {
|
||||||
|
.outer {
|
||||||
|
height: 200px
|
||||||
|
/* Or whatever */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.text1line {
|
||||||
|
display: block;
|
||||||
|
/* or inline-block */
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
word-wrap: break-word;
|
||||||
|
overflow: hidden;
|
||||||
|
max-height: 1em;
|
||||||
|
line-height: 1em;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
{if isset($xheader)}
|
{if isset($xheader)}
|
||||||
@ -182,7 +199,7 @@
|
|||||||
<li {if $_routes[1] eq 'by-period'}class="active" {/if}><a
|
<li {if $_routes[1] eq 'by-period'}class="active" {/if}><a
|
||||||
href="{$_url}reports/by-period">{$_L['Period_Reports']}</a></li>
|
href="{$_url}reports/by-period">{$_L['Period_Reports']}</a></li>
|
||||||
<li {if $_routes[1] eq 'activation'}class="active" {/if}><a
|
<li {if $_routes[1] eq 'activation'}class="active" {/if}><a
|
||||||
href="{$_url}reports/activation">{Lang::T('Activation History')}</a></li>
|
href="{$_url}reports/activation">{Lang::T('Activation History')}</a></li>
|
||||||
{$_MENU_REPORTS}
|
{$_MENU_REPORTS}
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
@ -252,15 +269,20 @@
|
|||||||
href="{$_url}settings/users">{$_L['Administrator_Users']}</a></li>
|
href="{$_url}settings/users">{$_L['Administrator_Users']}</a></li>
|
||||||
<li {if $_routes[1] eq 'dbstatus'}class="active" {/if}><a
|
<li {if $_routes[1] eq 'dbstatus'}class="active" {/if}><a
|
||||||
href="{$_url}settings/dbstatus">{$_L['Backup_Restore']}</a></li>
|
href="{$_url}settings/dbstatus">{$_L['Backup_Restore']}</a></li>
|
||||||
<li {if $_routes[0] eq 'pluginmanager'}class="active" {/if}>
|
|
||||||
<a href="{$_url}pluginmanager">{Lang::T('Plugin Manager')}</a>
|
|
||||||
</li>
|
|
||||||
<li {if $_system_menu eq 'paymentgateway'}class="active" {/if}>
|
<li {if $_system_menu eq 'paymentgateway'}class="active" {/if}>
|
||||||
<a href="{$_url}paymentgateway">
|
<a href="{$_url}paymentgateway">
|
||||||
<span class="text">{Lang::T('Payment Gateway')}</span>
|
<span class="text">{Lang::T('Payment Gateway')}</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{$_MENU_SETTINGS}
|
{$_MENU_SETTINGS}
|
||||||
|
<li {if $_routes[0] eq 'pluginmanager'}class="active" {/if}>
|
||||||
|
<a href="{$_url}pluginmanager"><i class="glyphicon glyphicon-tasks"></i>
|
||||||
|
{Lang::T('Plugin Manager')} <small class="label pull-right">Free</small></a>
|
||||||
|
</li>
|
||||||
|
<li {if $_routes[0] eq 'codecanyon'}class="active" {/if}>
|
||||||
|
<a href="{$_url}codecanyon"><i class="glyphicon glyphicon-shopping-cart"></i>
|
||||||
|
Codecanyon.net <small class="label pull-right">Paid</small></a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
{$_MENU_AFTER_SETTINGS}
|
{$_MENU_AFTER_SETTINGS}
|
||||||
@ -274,10 +296,10 @@
|
|||||||
<ul class="treeview-menu">
|
<ul class="treeview-menu">
|
||||||
<li {if $_routes[1] eq 'list'}class="active" {/if}><a
|
<li {if $_routes[1] eq 'list'}class="active" {/if}><a
|
||||||
href="{$_url}logs/phpnuxbill">PhpNuxBill</a></li>
|
href="{$_url}logs/phpnuxbill">PhpNuxBill</a></li>
|
||||||
{if $_c['radius_enable']}
|
{if $_c['radius_enable']}
|
||||||
<li {if $_routes[1] eq 'radius'}class="active" {/if}><a href="{$_url}logs/radius">Radius</a>
|
<li {if $_routes[1] eq 'radius'}class="active" {/if}><a href="{$_url}logs/radius">Radius</a>
|
||||||
</li>
|
</li>
|
||||||
{/if}
|
{/if}
|
||||||
</ul>
|
</ul>
|
||||||
{$_MENU_LOGS}
|
{$_MENU_LOGS}
|
||||||
</li>
|
</li>
|
||||||
@ -301,11 +323,11 @@
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="content">
|
<section class="content">
|
||||||
{if isset($notify)}
|
{if isset($notify)}
|
||||||
<div class="alert alert-{if $notify_t == 's'}success{else}danger{/if}">
|
<div class="alert alert-{if $notify_t == 's'}success{else}danger{/if}">
|
||||||
<button type="button" class="close" data-dismiss="alert">
|
<button type="button" class="close" data-dismiss="alert">
|
||||||
<span aria-hidden="true">×</span>
|
<span aria-hidden="true">×</span>
|
||||||
</button>
|
</button>
|
||||||
<div>{$notify}</div>
|
<div>{$notify}</div>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
Loading…
x
Reference in New Issue
Block a user