feat: Add comprehensive documentation suite and reorganize project structure

- Created complete documentation in docs/ directory
- Added PROJECT_OVERVIEW.md with feature highlights and getting started guide
- Added ARCHITECTURE.md with system design and technical details
- Added SECURITY.md with comprehensive security implementation guide
- Added DEVELOPMENT.md with development workflows and best practices
- Added DEPLOYMENT.md with production deployment instructions
- Added API.md with complete REST API documentation
- Added CONTRIBUTING.md with contribution guidelines
- Added CHANGELOG.md with version history and migration notes
- Reorganized all documentation files into docs/ directory for better organization
- Updated README.md with proper documentation links and quick navigation
- Enhanced project structure with professional documentation standards
This commit is contained in:
SamiAhmed7777
2025-10-21 00:39:45 -07:00
commit 0b7e2d0a5b
6080 changed files with 1332936 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
<style>#cb-response{ldelim}margin-top:-15px{rdelim}</style>
<div id="ct-wrapper">
<form id="ct-set-form" action="" method="post">
<article class="no-display">
<h3 class="content-title"><i class="icon-share"></i>{lang_entry key="account.entry.act.share"}</h3>
<div class="line"></div>
</article>
<div class="swiper-ph swiper-ph-tnav"></div>
<div class="swiper-top swiper-top-tnav" style="display:{$ssd}">
<div class="swiper-button-prev swiper-button-prev-tnav"{$sso}></div>
<div class="swiper-button-next swiper-button-next-tnav"{$sso}></div>
<div class="swiper swiper-tnav">
<div class="swiper-wrapper">
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry1" or $smarty.get.s eq ""} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry1" rel="nofollow"><span><i class="icon-user"></i> {lang_entry key="account.entry.overview"}</span></a></div>
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry2"} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry2" rel="nofollow"><span><i class="icon-profile"></i> {lang_entry key="account.entry.profile.setup"}</span></a></div>
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry4"} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry4" rel="nofollow"><span><i class="icon-envelope"></i> {lang_entry key="account.entry.mail.opts"}</span></a></div>
{if $activity_logging eq 1}
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry5"} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry5" rel="nofollow"><span><i class="icon-share"></i> {lang_entry key="account.entry.act.share"}</span></a></div>
{/if}
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry6"} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry6" rel="nofollow"><span><i class="icon-key"></i> {lang_entry key="account.entry.act.manage"}</span></a></div>
</div>
</div>
</div>
<div class="no-display">
<div class="sortings"><div class="no-display">{include file="tpl_backend/tpl_settings/ct-save-top.tpl"}</div></div>
<div class="page-actions">{include file="tpl_backend/tpl_settings/ct-save-open-close.tpl"}</div>
</div>
<div class="clearfix"></div>
<div class="vs-column full">
{generate_html bullet_id="ct-bullet1" input_type="activity_sharing" entry_title="account.activity.sharing" entry_id="ct-entry-details1" input_name="" input_value="" bb=0 section="fe"}
</div>
<div class="clearfix"></div>
<input type="hidden" name="ct_entry" id="ct_entry" value="">
</form>
</div>
{include file="tpl_backend/tpl_settings/ct-switch-js.tpl"}
<script type="text/javascript">{include file="f_scripts/be/js/settings-accordion.js"}</script>
<script type="text/javascript">
{include file="tpl_frontend/tpl_acct/tpl_profilejs.tpl"}
$(document).ready(function() {ldelim}
$('.icheck-box input').each(function () {ldelim}
var self = $(this);
self.iCheck({ldelim}
checkboxClass: 'icheckbox_square-blue',
radioClass: 'iradio_square-blue',
increaseArea: '20%'
//insert: '<div class="icheck_line-icon"></div><label>' + label_text + '</label>'
{rdelim});
{rdelim});
{rdelim});
$(document).ready(function () {ldelim}
var nma=$('.sidebar-container .menu-panel-entry.menu-panel-entry-active').attr('id');
var ma=$('.sidebar-container .menu-panel-entry.menu-panel-entry-active').attr('id').slice(0,19);
$('.tpl_account #siteContent nav>ul>li>a').on('click',function(e){ldelim}e.preventDefault();var s=$(this).attr('rel-s');if(s=='#account-menu-entry1'){ldelim}location.reload();return false;{rdelim}$('.sidebar-container li.menu-panel-entry'+s+' a').click();{rdelim});
$('.tpl_account #siteContent .swiper-tnav .swiper-slide >a').on('click',function(e){ldelim}e.preventDefault();var s=$(this).attr('rel-s');if(s=='#account-menu-entry1'){ldelim}location.reload();return false;{rdelim}$('.sidebar-container li.menu-panel-entry'+s+' a').click();{rdelim});
{rdelim});
</script>
{insert name="swiperJS" for="tnav"}

View File

@@ -0,0 +1,168 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{if $ch_title}{$ch_title}{elseif $usr_dname}{$usr_dname}{else}{$usr_user}{/if} - EasyStream</title>
<link rel="stylesheet" href="{$main_url}/f_templates/tpl_frontend/css/channel.css">
<style>
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; margin: 0; background: #f8f9fa; }
.header { background: #fff; border-bottom: 1px solid #e1e5e9; padding: 1rem 0; }
.header-content { max-width: 1200px; margin: 0 auto; display: flex; align-items: center; justify-content: space-between; padding: 0 20px; }
.logo { font-size: 1.5rem; font-weight: bold; color: #007bff; text-decoration: none; }
.nav { display: flex; gap: 2rem; }
.nav a { color: #495057; text-decoration: none; padding: 0.5rem 1rem; border-radius: 4px; transition: all 0.2s; }
.nav a:hover { background: #f8f9fa; }
.container { max-width: 1200px; margin: 0 auto; padding: 0 20px; }
.channel-header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 3rem 0; margin-bottom: 2rem; }
.channel-info { display: flex; align-items: center; gap: 2rem; }
.channel-avatar { width: 120px; height: 120px; border-radius: 50%; border: 4px solid white; object-fit: cover; }
.channel-details h1 { margin: 0 0 0.5rem 0; font-size: 2rem; }
.channel-details p { margin: 0 0 1rem 0; opacity: 0.9; }
.channel-stats { display: flex; gap: 2rem; margin-bottom: 1rem; }
.stat { text-align: center; }
.stat-number { font-size: 1.5rem; font-weight: bold; }
.stat-label { font-size: 0.875rem; opacity: 0.8; }
.subscribe-btn { background: #cc0000; color: white; border: none; padding: 0.75rem 2rem; border-radius: 25px; cursor: pointer; font-weight: 500; }
.subscribe-btn:hover { background: #aa0000; }
.channel-nav { background: white; border-radius: 8px; padding: 1rem; margin-bottom: 2rem; box-shadow: 0 2px 4px rgba(0,0,0,0.1); }
.nav-tabs { display: flex; gap: 2rem; }
.nav-tab { padding: 0.5rem 1rem; border-radius: 20px; text-decoration: none; color: #495057; transition: all 0.2s; }
.nav-tab:hover, .nav-tab.active { background: #007bff; color: white; }
.channel-content { background: white; border-radius: 8px; padding: 2rem; box-shadow: 0 2px 4px rgba(0,0,0,0.1); }
</style>
</head>
<body>
<header class="header">
<div class="header-content">
<a href="{$main_url}" class="logo">🎬 EasyStream</a>
<nav class="nav">
<a href="{$main_url}">Home</a>
<a href="{$main_url}/videos">Videos</a>
<a href="{$main_url}/upload">Upload</a>
<a href="{$main_url}/search">Search</a>
{if $smarty.session.USER_ID}
<a href="{$main_url}/account">Account</a>
{else}
<a href="{$main_url}/signin">Sign In</a>
{/if}
</nav>
</div>
</header>
<div class="channel-header">
<div class="container">
<div class="channel-info">
<img src="{if $usr_photo}{$usr_photo}{else}{$main_url}/f_templates/tpl_frontend/img/default-avatar.png{/if}"
alt="{if $ch_title}{$ch_title}{else}{$usr_user}{/if}" class="channel-avatar">
<div class="channel-details">
<h1>{if $ch_title}{$ch_title}{elseif $usr_dname}{$usr_dname}{else}{$usr_user}{/if}</h1>
<p>@{$usr_user}</p>
<div class="channel-stats">
<div class="stat">
<div class="stat-number">{if $usr_subscribers}{$usr_subscribers|number_format}{else}0{/if}</div>
<div class="stat-label">Subscribers</div>
</div>
<div class="stat">
<div class="stat-number">{if $total_videos}{$total_videos|number_format}{else}0{/if}</div>
<div class="stat-label">Videos</div>
</div>
<div class="stat">
<div class="stat-number">{if $total_views}{$total_views|number_format}{else}0{/if}</div>
<div class="stat-label">Views</div>
</div>
</div>
{if $smarty.session.USER_ID and $smarty.session.USER_ID neq $usr_id}
<button class="subscribe-btn" data-user-id="{$usr_id}">
{if $user_issub}Subscribed{else}Subscribe{/if}
</button>
{/if}
</div>
</div>
</div>
</div>
<div class="container">
<div class="channel-nav">
<div class="nav-tabs">
<a href="?tab=home" class="nav-tab {if !$smarty.get.tab or $smarty.get.tab eq 'home'}active{/if}">
🏠 Home
</a>
{if $video_module}
<a href="?tab=videos" class="nav-tab {if $smarty.get.tab eq 'videos'}active{/if}">
📹 Videos
</a>
{/if}
{if $short_module}
<a href="?tab=shorts" class="nav-tab {if $smarty.get.tab eq 'shorts'}active{/if}">
🎬 Shorts
</a>
{/if}
{if $live_module}
<a href="?tab=live" class="nav-tab {if $smarty.get.tab eq 'live'}active{/if}">
📺 Live
</a>
{/if}
{if $image_module}
<a href="?tab=images" class="nav-tab {if $smarty.get.tab eq 'images'}active{/if}">
🖼️ Images
</a>
{/if}
{if $audio_module}
<a href="?tab=audio" class="nav-tab {if $smarty.get.tab eq 'audio'}active{/if}">
🎵 Audio
</a>
{/if}
<a href="?tab=about" class="nav-tab {if $smarty.get.tab eq 'about'}active{/if}">
About
</a>
</div>
</div>
<div class="channel-content">
{generate_html type="channel_layout" bullet_id="ct-bullet1" entry_id="ct-entry-details1" section="files" bb="1"}
</div>
</div>
<script type="text/javascript">
var current_url = '{$main_url}/';
var menu_section = '{href_entry key="channel"}';
var fe_mask = 'on';
// Enhanced channel interactions
document.addEventListener('DOMContentLoaded', function() {
// Subscribe functionality
const subscribeBtn = document.querySelector('.subscribe-btn');
if (subscribeBtn) {
subscribeBtn.addEventListener('click', function() {
const userId = this.dataset.userId;
// Integration with existing EasyStream subscription system
console.log('Subscribe to user:', userId);
});
}
// Tab interactions
document.querySelectorAll('.nav-tab').forEach(tab => {
tab.addEventListener('mouseenter', function() {
this.style.transform = 'translateY(-1px)';
});
tab.addEventListener('mouseleave', function() {
this.style.transform = 'translateY(0)';
});
});
});
</script>
{insert name="swiperJS" for="tnav"}
{if $video_module}{insert name="swiperJS" for="video"}{/if}
{if $short_module}{insert name="swiperJS" for="short"}{/if}
{if $live_module}{insert name="swiperJS" for="live"}{/if}
{if $image_module}{insert name="swiperJS" for="image"}{/if}
{if $audio_module}{insert name="swiperJS" for="audio"}{/if}
{if $document_module}{insert name="swiperJS" for="doc"}{/if}
{if $blog_module}{insert name="swiperJS" for="blog"}{/if}
</body>
</html>

View File

@@ -0,0 +1,9 @@
<script type="text/javascript">
var current_url = '{$main_url}/';
var menu_section = '{href_entry key="channels"}';
var fe_mask = 'on';
</script>
<div class="" id="ct-wrapper">
{generate_html type="channels_layout" bullet_id="ct-bullet1" entry_id="ct-entry-details1" section="files" bb="1"}
</div>

View File

@@ -0,0 +1,74 @@
<style>#cb-response{ldelim}margin-top:-15px{rdelim}</style>
<div id="ct-wrapper">
<form id="ct-set-form" action="" method="post">
<article class="no-display">
<h3 class="content-title"><i class="icon-envelope"></i>{lang_entry key="account.entry.mail.opts"}</h3>
<div class="line"></div>
</article>
<div class="swiper-ph swiper-ph-tnav"></div>
<div class="swiper-top swiper-top-tnav" style="display:{$ssd}">
<div class="swiper-button-prev swiper-button-prev-tnav"{$sso}></div>
<div class="swiper-button-next swiper-button-next-tnav"{$sso}></div>
<div class="swiper swiper-tnav">
<div class="swiper-wrapper">
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry1" or $smarty.get.s eq ""} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry1" rel="nofollow"><span><i class="icon-user"></i> {lang_entry key="account.entry.overview"}</span></a></div>
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry2"} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry2" rel="nofollow"><span><i class="icon-profile"></i> {lang_entry key="account.entry.profile.setup"}</span></a></div>
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry4"} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry4" rel="nofollow"><span><i class="icon-envelope"></i> {lang_entry key="account.entry.mail.opts"}</span></a></div>
{if $activity_logging eq 1}
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry5"} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry5" rel="nofollow"><span><i class="icon-share"></i> {lang_entry key="account.entry.act.share"}</span></a></div>
{/if}
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry6"} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry6" rel="nofollow"><span><i class="icon-key"></i> {lang_entry key="account.entry.act.manage"}</span></a></div>
</div>
</div>
</div>
<div class="no-display">
<div class="sortings"><div class="no-display">{include file="tpl_backend/tpl_settings/ct-save-top.tpl"}</div></div>
<div class="page-actions">{include file="tpl_backend/tpl_settings/ct-save-open-close.tpl"}</div>
</div>
<div class="clearfix"></div>
<div class="vs-column half">
{generate_html bullet_id="ct-bullet1" input_type="email_opts" entry_title="account.email.address" entry_id="ct-entry-details1" input_name="" input_value="" bb=1 section="fe"}
{if $affiliate_module eq 1 or $user_subscriptions eq 1}{generate_html bullet_id="ct-bullet4" input_type="payout_opts" entry_title="account.payout.address" entry_id="ct-entry-details4" input_name="" input_value="" bb=1 section="fe"}{/if}
</div>
<div class="vs-column half fit">
{generate_html bullet_id="ct-bullet2" input_type="email_notif" entry_title="account.email.notif.site" entry_id="ct-entry-details2" input_name="" input_value="" bb=1 section="fe"}
{generate_html bullet_id="ct-bullet3" input_type="email_subs" entry_title="account.email.notif.subs" entry_id="ct-entry-details3" input_name="" input_value="" bb=0 section="fe"}
</div>
<div class="clearfix"></div>
<input type="hidden" name="ct_entry" id="ct_entry" value="">
</form>
</div>
{include file="tpl_backend/tpl_settings/ct-switch-js.tpl"}
<script type="text/javascript">{include file="f_scripts/be/js/settings-accordion.js"}</script>
<script type="text/javascript">
{include file="tpl_frontend/tpl_acct/tpl_profilejs.tpl"}
$(document).ready(function() {ldelim}
$('.icheck-box input').each(function () {ldelim}
var self = $(this);
self.iCheck({ldelim}
checkboxClass: 'icheckbox_square-blue',
radioClass: 'iradio_square-blue',
increaseArea: '20%'
//insert: '<div class="icheck_line-icon"></div><label>' + label_text + '</label>'
{rdelim});
{rdelim});
$(".email-change-button").click(function(){ldelim}
$("#cb-response-wrap").detach();
$("#ct-wrapper").mask(" ");
$.post(current_url + menu_section + "?s={$smarty.get.s|sanitize}&do=emchange", $("#ct-set-form").serialize(), function(data) {ldelim}
$(data).insertAfter($(".swiper-top").next());
$("#ct-wrapper").unmask();
{rdelim});
{rdelim});
{rdelim});
$(document).ready(function () {ldelim}
var nma=$('.sidebar-container .menu-panel-entry.menu-panel-entry-active').attr('id');
var ma=$('.sidebar-container .menu-panel-entry.menu-panel-entry-active').attr('id').slice(0,19);
$('.tpl_account #siteContent nav>ul>li>a').on('click',function(e){ldelim}e.preventDefault();var s=$(this).attr('rel-s');if(s=='#account-menu-entry1'){ldelim}location.reload();return false;{rdelim}$('.sidebar-container li.menu-panel-entry'+s+' a').click();{rdelim});
$('.tpl_account #siteContent .swiper-tnav .swiper-slide a').on('click',function(e){ldelim}e.preventDefault();var s=$(this).attr('rel-s');if(s=='#account-menu-entry1'){ldelim}location.reload();return false;{rdelim}$('.sidebar-container li.menu-panel-entry'+s+' a').click();{rdelim});
$("a.showp").on("click",function(e){ldelim}e.preventDefault();$(this).prev().attr("type", "text");$(this).addClass("no-display");$(this).next().removeClass("no-display"){rdelim});$("a.hidep").on("click",function(e){ldelim}e.preventDefault();$(this).prev().prev().attr("type", "password");$(this).addClass("no-display");$(this).prev().removeClass("no-display"){rdelim});
{rdelim});
</script>
{insert name="swiperJS" for="tnav"}

View File

@@ -0,0 +1,68 @@
<style>#cb-response{ldelim}margin-top:-15px{rdelim}</style>
<div id="ct-wrapper">
<form id="ct-set-form" action="" method="post" class="">
<article class="no-display">
<h3 class="content-title"><i class="icon-key"></i>{lang_entry key="account.entry.act.manage"}</h3>
<div class="line"></div>
</article>
<div class="swiper-ph swiper-ph-tnav"></div>
<div class="swiper-top swiper-top-tnav" style="display:{$ssd}">
<div class="swiper-button-prev swiper-button-prev-tnav"{$sso}></div>
<div class="swiper-button-next swiper-button-next-tnav"{$sso}></div>
<div class="swiper swiper-tnav">
<div class="swiper-wrapper">
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry1" or $smarty.get.s eq ""} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry1" rel="nofollow"><span><i class="icon-user"></i> {lang_entry key="account.entry.overview"}</span></a></div>
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry2"} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry2" rel="nofollow"><span><i class="icon-profile"></i> {lang_entry key="account.entry.profile.setup"}</span></a></div>
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry4"} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry4" rel="nofollow"><span><i class="icon-envelope"></i> {lang_entry key="account.entry.mail.opts"}</span></a></div>
{if $activity_logging eq 1}
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry5"} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry5" rel="nofollow"><span><i class="icon-share"></i> {lang_entry key="account.entry.act.share"}</span></a></div>
{/if}
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry6"} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry6" rel="nofollow"><span><i class="icon-key"></i> {lang_entry key="account.entry.act.manage"}</span></a></div>
</div>
</div>
</div>
<div class="no-display">
<div class="sortings"><div class="no-display">{include file="tpl_backend/tpl_settings/ct-save-top.tpl"}</div></div>
<div class="page-actions">{include file="tpl_backend/tpl_settings/ct-save-open-close.tpl"}</div>
</div>
<div class="clearfix"></div>
<div class="vs-column half">
{generate_html bullet_id="ct-bullet1" input_type="manage_account_pass" entry_title="account.manage.change.pass" entry_id="ct-entry-details1" input_name="" input_value="" bb=1 section="fe"}
</div>
<div class="vs-column half fit">
{generate_html bullet_id="ct-bullet2" input_type="manage_account_delete" entry_title="account.manage.delete" entry_id="ct-entry-details2" input_name="" input_value="" bb=0 section="fe"}
</div>
<div class="clearfix"></div>
<input type="hidden" name="ct_entry" id="ct_entry" value="">
</form>
</div>
{include file="tpl_backend/tpl_settings/ct-switch-js.tpl"}
<script type="text/javascript">{include file="f_scripts/be/js/settings-accordion.js"}</script>
<script type="text/javascript">
{include file="tpl_frontend/tpl_acct/tpl_profilejs.tpl"}
$(".change-button").click(function(){ldelim}
$("#cb-response-wrap").detach();
$("#ct-wrapper").mask(" ");
$.post(current_url + menu_section + "?s={$smarty.get.s|sanitize}&do=cpass", $("#ct-set-form").serialize(), function(data) {ldelim}
$(data).insertAfter($(".swiper-top").next());
$("#ct-wrapper").unmask();
{rdelim});
{rdelim});
$(".purge-button").click(function(){ldelim}
$("#cb-response-wrap").detach();
$("#ct-wrapper").mask(" ");
$.post(current_url + menu_section + "?s={$smarty.get.s|sanitize}&do=purge", $("#ct-set-form").serialize(), function(data) {ldelim}
$(data).insertAfter($(".swiper-top").next());
$("#ct-wrapper").unmask();
{rdelim});
{rdelim});
$(document).ready(function () {ldelim}
var nma=$('.sidebar-container .menu-panel-entry.menu-panel-entry-active').attr('id');
var ma=$('.sidebar-container .menu-panel-entry.menu-panel-entry-active').attr('id').slice(0,19);
$('.tpl_account #siteContent nav>ul>li>a').on('click',function(e){ldelim}e.preventDefault();var s=$(this).attr('rel-s');if(s=='#account-menu-entry1'){ldelim}location.reload();return false;{rdelim}$('.sidebar-container li.menu-panel-entry'+s+' a').click();{rdelim});
$('.tpl_account #siteContent .swiper-tnav .swiper-slide >a').on('click',function(e){ldelim}e.preventDefault();var s=$(this).attr('rel-s');if(s=='#account-menu-entry1'){ldelim}location.reload();return false;{rdelim}$('.sidebar-container li.menu-panel-entry'+s+' a').click();{rdelim});
$("a.showp").on("click",function(e){ldelim}e.preventDefault();$(this).prev().attr("type", "text");$(this).addClass("no-display");$(this).next().removeClass("no-display"){rdelim});$("a.hidep").on("click",function(e){ldelim}e.preventDefault();$(this).prev().prev().attr("type", "password");$(this).addClass("no-display");$(this).prev().removeClass("no-display"){rdelim});
{rdelim});
</script>
{insert name="swiperJS" for="tnav"}

View File

@@ -0,0 +1,9 @@
<script type="text/javascript">
var current_url = '{$main_url}/';
var menu_section = '{href_entry key="manage_channel"}';
var fe_mask = 'on';
</script>
<div class="wdmax" id="ct-wrapper">
{generate_html type="my_channels_layout" bullet_id="ct-bullet1" entry_id="ct-entry-details1" section="files" bb="1"}
</div>

View File

@@ -0,0 +1,58 @@
<link rel="stylesheet" type="text/css" href="{$styles_url}/view.min.css">
<div class="left-float wdmax">
<div id="overview-userinfo">
<div class="statsBox">
<article class="no-display">
<h3 class="content-title"><i class="icon-user"></i>{lang_entry key="account.entry.account.overview"}</h3>
<div class="line"></div>
</article>
<div class="swiper-ph swiper-ph-tnav"></div>
<div class="swiper-top swiper-top-tnav" style="display:{$ssd}">
<div class="swiper-button-prev swiper-button-prev-tnav"{$sso}></div>
<div class="swiper-button-next swiper-button-next-tnav"{$sso}></div>
<div class="swiper swiper-tnav">
<div class="swiper-wrapper">
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry1" or $smarty.get.s eq ""} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry1" rel="nofollow"><span><i class="icon-user"></i> {lang_entry key="account.entry.overview"}</span></a></div>
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry2"} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry2" rel="nofollow"><span><i class="icon-profile"></i> {lang_entry key="account.entry.profile.setup"}</span></a></div>
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry4"} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry4" rel="nofollow"><span><i class="icon-envelope"></i> {lang_entry key="account.entry.mail.opts"}</span></a></div>
{if $activity_logging eq 1}
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry5"} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry5" rel="nofollow"><span><i class="icon-share"></i> {lang_entry key="account.entry.act.share"}</span></a></div>
{/if}
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry6"} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry6" rel="nofollow"><span><i class="icon-key"></i> {lang_entry key="account.entry.act.manage"}</span></a></div>
</div>
</div>
</div>
<div class="vs-column fourths mt-15">
<div class="user-thumb-xlarge">
<div><center><a href="{$main_url}/@{$smarty.session.USER_NAME}"><img id="own-profile-image" title="{$smarty.session.USER_NAME}" alt="{$smarty.session.USER_NAME}" src="{insert name="getProfileImage" assign="profileImage" for="{$smarty.session.USER_ID}"}{$profileImage}"></a></center></div>
</div>
<div class="imageChange">
<form method="post" action="" class="entry-form-class overview-form">
<center>
<button class="save-entry-button button-grey search-button form-button new-image" type="button" onclick="$('.thumb-popup').trigger('click');"><span>{lang_entry key="account.image.change"}</span></button>
<a href="javascript:;" rel="popuprel" class="thumb-popup hidden">{lang_entry key="frontend.global.change"}</a>
</center>
</form>
</div>
<div class="popupbox" id="popuprel"></div>
<div id="fade"></div>
</div>
<div class="vs-column three_fourths fit mt-15">
{insert name="getUserStats" type="sub"}
</div>
{insert name="getUserStats" type="stats"}
</div>
<div class="clearfix"></div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function () {ldelim}
var nma=$('.sidebar-container .menu-panel-entry.menu-panel-entry-active').attr('id');
var ma=$('.sidebar-container .menu-panel-entry.menu-panel-entry-active').attr('id').slice(0,19);
$('.tpl_account #siteContent nav>ul>li>a').on('click',function(e){ldelim}e.preventDefault();var s=$(this).attr('rel-s');$('.sidebar-container li.menu-panel-entry'+s+' a').click();{rdelim});
$('.tpl_account #siteContent .swiper-tnav .swiper-slide a').on('click',function(e){ldelim}e.preventDefault();var s=$(this).attr('rel-s');$('.sidebar-container li.menu-panel-entry'+s+' a').click();{rdelim});
{rdelim});
</script>
{insert name="swiperJS" for="tnav"}

View File

@@ -0,0 +1,92 @@
<form id="profile-image-form" class="entry-form-class" method="post" action="" enctype="multipart/form-data">
<article>
<h3 class="content-title"><i class="icon-user"></i> {lang_entry key="account.image.change"}</h3>
<div class="line"></div>
</article>
<div id="intabdiv">
<div class="left-float left-align wdmax row" id="overview-userinfo-response"></div>
<div class="left-float left-align wdmax">
<div class="row">
<div class="icheck-box up"><input type="radio" name="profile_image_action" id="profile-image-upload" value="new" /><label>{lang_entry key="account.image.upload"}</label></div>
</div>
<div class="row" id="overview-userinfo-file">
<div class="left-float left-padding25 hiddenfile">
<input type="file" name="profile_image" id="profile-image" size="30" onchange="$('#profile-image-form').submit();" />
</div>
<center>
<button onclick="$('.icheck-box.up input').iCheck('check');$('#profile-image').trigger('click');" class="save-entry-button button-grey search-button form-button new-image" type="button"><span>{lang_entry key="frontend.global.upload.image"}</span></button>
</center>
<br>
</div>
</div>
<div class="row">
<div class="icheck-box"><input type="radio" name="profile_image_action" id="profile-image-default" value="default" /><label>{lang_entry key="account.image.upload.default"}</label></div>
</div>
<div class="row">
<div class="row" id="save-button-row">
<button name="save_changes_btn" id="save-image-btn" class="save-entry-button button-grey search-button form-button" type="button" value="1"><span>{lang_entry key="frontend.global.savechanges"}</span></button>
<a class="link cancel-trigger" href="#"><span>{lang_entry key="frontend.global.cancel"}</span></a>
</div>
</div>
</div>
</form>
<script type="text/javascript">
$(document).ready(function() {ldelim}
var options = {ldelim}
target: "#overview-userinfo-response",
beforeSubmit: showRequest,
success: showResponse,
url: current_url + menu_section + "?s=account-menu-entry1&do=upload"
{rdelim}
function showRequest() {ldelim} $('#intabdiv').mask(' '); $("#save-button-row").addClass("hidden"); {rdelim}
function showResponse() {ldelim} $('#intabdiv').unmask(); $("#save-button-row").removeClass("hidden"); $(".fancybox-inner").css("height", "auto"); $(".fancybox-opened").css("top", "25%"); {rdelim}
$(document).on("submit", "#profile-image-form", function() {ldelim}
$(this).ajaxSubmit(options);
return false;
{rdelim});
$("#save-image-btn").click(function() {ldelim}
$("#intabdiv").mask(" ");
$.post(current_url + menu_section + '?s=account-menu-entry1&do=save', $("#profile-image-form").serialize(), function(data) {
$("#overview-userinfo-response").html(data);
$("#intabdiv").unmask();
});
{rdelim});
$("#profile-image").click(function() {ldelim}
$("#profile-image-upload").prop("checked", true);
{rdelim});
$(document).one("click", ".link", function() {ldelim}
$("#profile-image").replaceWith('<input type="file" name="profile_image" id="profile-image" size="30" />');
$("#intabdiv").mask(" ");
$.post(current_url + menu_section + '?s=account-menu-entry1&do=cancel', $("#profile-image-form").serialize(), function(data) {
$("#intabdiv").unmask();
$.fancybox.close(true);
$(".fancybox-overlay.fancybox-overlay-fixed").hide().detach();
});
// $("#fade , #popuprel").hide();
return false;
{rdelim});
$('.icheck-box input').each(function () {ldelim}
var self = $(this);
self.iCheck({ldelim}
checkboxClass: 'icheckbox_square-blue',
radioClass: 'iradio_square-blue',
increaseArea: '20%'
//insert: '<div class="icheck_line-icon"></div><label>' + label_text + '</label>'
{rdelim});
{rdelim});
{rdelim});
$(document).keyup(function(e){ldelim}
if (e.keyCode == 27) { $(".link").click(); }
{rdelim});
</script>

View File

@@ -0,0 +1,74 @@
<style>#cb-response{ldelim}margin-top:-15px{rdelim}</style>
<div id="ct-wrapper" class="">
<form id="ct-set-form" action="" method="post">
<article class="no-display">
<h3 class="content-title"><i class="icon-profile"></i>{lang_entry key="account.entry.profile.setup"}</h3>
<div class="line"></div>
</article>
<div class="swiper-ph swiper-ph-tnav"></div>
<div class="swiper-top swiper-top-tnav" style="display:{$ssd}">
<div class="swiper-button-prev swiper-button-prev-tnav"{$sso}></div>
<div class="swiper-button-next swiper-button-next-tnav"{$sso}></div>
<div class="swiper swiper-tnav">
<div class="swiper-wrapper">
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry1" or $smarty.get.s eq ""} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry1" rel="nofollow"><span><i class="icon-user"></i> {lang_entry key="account.entry.overview"}</span></a></div>
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry2"} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry2" rel="nofollow"><span><i class="icon-profile"></i> {lang_entry key="account.entry.profile.setup"}</span></a></div>
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry4"} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry4" rel="nofollow"><span><i class="icon-envelope"></i> {lang_entry key="account.entry.mail.opts"}</span></a></div>
{if $activity_logging eq 1}
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry5"} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry5" rel="nofollow"><span><i class="icon-share"></i> {lang_entry key="account.entry.act.share"}</span></a></div>
{/if}
<div class="swiper-slide{if $smarty.get.s eq "account-menu-entry6"} swiper-slide-current{/if}" rel-m="{href_entry key="account"}"><a href="" rel-s="#account-menu-entry6" rel="nofollow"><span><i class="icon-key"></i> {lang_entry key="account.entry.act.manage"}</span></a></div>
</div>
</div>
</div>
<div class="no-display">
<div class="sortings"><div class="no-display">{include file="tpl_backend/tpl_settings/ct-save-top.tpl"}</div></div>
<div class="page-actions">{include file="tpl_backend/tpl_settings/ct-save-open-close.tpl"}</div>
</div>
<div class="clearfix"></div>
<div class="vs-column half">
{generate_html bullet_id="ct-bullet1" input_type="profile_about" entry_title="account.profile.about.display" entry_id="ct-entry-details1" input_name="" input_value="" bb=1 section="fe"}
{generate_html bullet_id="ct-bullet2" input_type="profile_details" entry_title="account.profile.personal" entry_id="ct-entry-details2" input_name="" input_value="" bb=1 section="fe"}
{generate_html bullet_id="ct-bullet3" input_type="profile_location" entry_title="account.profile.location" entry_id="ct-entry-details3" input_name="" input_value="" bb=1 section="fe"}
</div>
<div class="vs-column half fit">
{generate_html bullet_id="ct-bullet4" input_type="profile_job" entry_title="account.profile.job" entry_id="ct-entry-details4" input_name="" input_value="" bb=1 section="fe"}
{generate_html bullet_id="ct-bullet5" input_type="profile_education" entry_title="account.profile.education" entry_id="ct-entry-details5" input_name="" input_value="" bb=1 section="fe"}
{generate_html bullet_id="ct-bullet6" input_type="profile_interests" entry_title="account.profile.interests" entry_id="ct-entry-details6" input_name="" input_value="" bb=0 section="fe"}
</div>
<div class="clearfix"></div>
<input type="hidden" name="ct_entry" id="ct_entry" value="">
</form>
</div>
{include file="tpl_backend/tpl_settings/ct-switch-js.tpl"}
<script type="text/javascript">{include file="f_scripts/be/js/settings-accordion.js"}</script>
<script type="text/javascript">
{include file="tpl_frontend/tpl_acct/tpl_profilejs.tpl"}
$(function() {ldelim}
SelectList.init("account_profile_bdate_m_sel");
SelectList.init("account_profile_bdate_d_sel");
SelectList.init("account_profile_bdate_y_sel");
SelectList.init("account_profile_personal_gender_sel");
SelectList.init("account_profile_personal_rel_sel");
SelectList.init("account_profile_personal_age_sel");
SelectList.init("account_profile_location_country_sel");
{rdelim});
$(document).ready(function(){ldelim}
$('.icheck-box input').each(function(){ldelim}
var self = $(this);
self.iCheck({ldelim}
checkboxClass: 'icheckbox_square-blue',
radioClass: 'iradio_square-blue',
increaseArea: '20%'
//insert: '<div class="icheck_line-icon"></div><label>' + label_text + '</label>'
{rdelim});
{rdelim});
var nma=$('.sidebar-container .menu-panel-entry.menu-panel-entry-active').attr('id');
var ma=$('.sidebar-container .menu-panel-entry.menu-panel-entry-active').attr('id').slice(0,19);
$('.tpl_account #siteContent nav>ul>li>a').on('click',function(e){ldelim}e.preventDefault();var s=$(this).attr('rel-s');if(s=='#account-menu-entry1'){ldelim}location.reload();return false;{rdelim}$('.sidebar-container li.menu-panel-entry'+s+' a').click();{rdelim});
$('.tpl_account #siteContent .swiper-tnav .swiper-slide a').on('click',function(e){ldelim}e.preventDefault();var s=$(this).attr('rel-s');if(s=='#account-menu-entry1'){ldelim}location.reload();return false;{rdelim}$('.sidebar-container li.menu-panel-entry'+s+' a').click();{rdelim});
{rdelim});
</script>
{insert name="swiperJS" for="tnav"}

View File

@@ -0,0 +1,5 @@
$(document).ready(function() {ldelim}
a = $(".sortings").parent().clone(true);
$(".sortings").parent().detach();
$(a).insertAfter(".swiper-top-tnav").removeClass("no-display").css({ldelim}{rdelim});
{rdelim});

View File

@@ -0,0 +1,3 @@
<div id="ct-wrapper">
{if $error_message ne ""}{$error_message}{elseif $notice_message ne ""}{$notice_message}{/if}
</div>