1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-06-26 11:40:48 +03:00

Frontend framework

* Написан плагин для модальных окон с возможностью прокрутки длинных окон
* Модальные окна перенесены в папку modals
* Мелкие исправления
This commit is contained in:
Denis Shakhov 2013-01-26 03:14:41 +07:00
parent 46213e95d6
commit ac528e6a23
22 changed files with 618 additions and 409 deletions

View file

@ -0,0 +1,65 @@
/*
* Modal
*/
/* Base class */
.modal {
display: none;
margin: 50px auto;
width: 500px;
color: #333;
border: 1px solid #666;
background-color: #fff;
border-radius: 5px;
-webkit-box-shadow: 0 0 15px rgba(0,0,0,.5);
-moz-box-shadow: 0 0 15px rgba(0,0,0,.5);
box-shadow: 0 0 15px rgba(0,0,0,.5);
overflow: hidden;
z-index: 9999;
}
/* Close button */
.modal .modal-close:before,
.modal .close:before { display: block; content: "×";}
.modal .modal-close,
.modal .close {
position: absolute;
top: 9px;
right: 14px;
font-weight: bold;
font-size: 26px;
line-height: 1em;
color: #000;
opacity: .3;
filter: alpha(opacity=30);
}
.modal .modal-close:hover,
.modal .close:hover { opacity: .7; filter: alpha(opacity=70); }
/* Header */
.modal .modal-header { background: #fafafa; border-bottom: 1px solid #f7f7f7; padding: 5px 20px; position: relative; }
.modal .modal-header h3 { font-size: 20px; font-weight: bold; margin-right: 20px; }
/* Content */
.modal .modal-content { padding: 20px; }
/* Footer */
.modal .modal-footer { background: #fafafa; border-top: 1px solid #f7f7f7; padding: 15px 20px; }
/* Overlay */
.modal-overlay {
display: none;
position: fixed;
top: 0; left: 0;
width: 100%;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA9JREFUeNpiYmBgaAAIMAAAjwCD5Hc2/AAAAABJRU5ErkJggg==);;
background: rgba(0,0,0,.5);
z-index: 9998;
overflow: auto;
}

View file

@ -3,7 +3,7 @@
*/
/* Base class
/* Base class
-------------------------------------------------- */
.nav { }
.nav > li { float: left; position: relative; }
@ -77,8 +77,7 @@
.nav.nav-tabs .dropdown-toggle:hover:after { border-top-color: #058; }
/* Tabs content */
.tabs-content { }
.tabs-content .tab-pane { display: none; }
.tab-pane { display: none; }
/* Userbar

View file

@ -0,0 +1,128 @@
/*
* Modal
*
* Author: Denis Shakhov
* Version: 1.0
*
*/
(function ($) {
$.fn.modal = function (options) {
$.modal.options = $.extend($.modal.defaults, options);
$.modal.windowWidth = $(window).width();
$.modal.windowHeight = $(window).height();
$.modal.overlay = $('<div class="' + $.modal.options.overlayClass + '" />').height($(window).height()).appendTo('body');
/* IE7 */
if ($('html').hasClass('ie7')) {
$('body').attr('scroll', 'no');
$('html').css('overflow', 'auto');
}
$.modal.overlay.click(function () {
$.modal.hide($('.modal:visible'));
});
$(window).resize(function () {
$.modal.windowWidth = $(window).width();
$.modal.windowHeight = $(window).height();
$.modal.overlay.height($.modal.windowHeight);
});
// Init modals
$('.modal').each(function () {
var modal = $(this);
modal.appendTo($.modal.overlay);
modal.click(function (e) {
e.stopPropagation();
});
modal.find('[data-toggle=modal-close]').click(function () {
$.modal.hide(modal);
});
});
// Init toggles
this.each(function () {
var
toggle = $(this),
center = toggle.data('modal-center') || true,
modal = $('#' + toggle.data('modal-target'));
toggle.click(function () {
$.modal.show(modal, null, center);
return false;
});
});
};
$.fn.modalShow = function (options) {
var
defaults = {
content: '',
center: true,
onShow: false
},
options = $.extend(defaults, options);
$.modal.show($(this), options.content, options.center);
if (options.onShow) options.onShow();
};
$.fn.modalHide = function () {
$.modal.hide($(this));
};
// Fallback
$.fn.jqmShow = $.fn.modalShow;
$.fn.jqmHide = $.fn.modalHide;
$.modal = {
defaults: {
overlayClass: 'modal-overlay',
closeClass: 'modal-close'
},
options: null,
overlay: null,
windowWidth: null,
windowHeight: null,
scrollTop: null,
show: function (modal, content, center) {
center = center == undefined ? true : center;
this.scrollTop = $(window).scrollTop();
$('.modal:visible').hide();
console.log(this.scrollTop);
$('html').css({'overflow': 'hidden'});
if (content) modal.find('.modal-content').html(content);
modal.show();
// Prevent content from shifting
$('body').css({'margin-right': $(window).width() - this.windowWidth});
$(window).scrollTop(this.scrollTop);
// Show overlay
this.overlay.fadeIn(300);
// Center
if (center && this.windowHeight > modal.outerHeight()) modal.css({'margin-top': (this.windowHeight - modal.height()) / 2});
},
hide: function (modal) {
this.overlay.fadeOut(300, function () {
if ($('html').hasClass('ie7')) {
$('html').css('overflow', 'auto');
} else {
$('html').css('overflow', 'visible');
}
$('body').css({'margin-right': 0});
modal.hide();
$(window).scrollTop($.modal.scrollTop);
});
}
};
})(jQuery);

View file

@ -1,16 +1,16 @@
var ls = ls || {};
ls.photoset =( function ($) {
this.idLast=0;
this.isLoading=false;
this.swfu;
this.initSwfUpload = function(opt) {
opt=opt || {};
opt.button_placeholder_id = 'photoset-start-upload';
opt.post_params.ls_photoset_target_tmp = $.cookie('ls_photoset_target_tmp') ? $.cookie('ls_photoset_target_tmp') : 0;
$(ls.swfupload).unbind('load').bind('load',function() {
this.swfu = ls.swfupload.init(opt);
@ -19,36 +19,36 @@ ls.photoset =( function ($) {
$(this.swfu).bind('eUploadSuccess',this.swfHandlerUploadSuccess);
$(this.swfu).bind('eUploadComplete',this.swfHandlerUploadComplete);
}.bind(this));
ls.swfupload.loadSwf();
}
this.swfHandlerUploadProgress = function(e, file, bytesLoaded, percent) {
$('#photoset_photo_empty_progress').text(file.name+': '+( percent==100 ? 'resize..' : percent +'%'));
}
this.swfHandlerFileDialogComplete = function(e, numFilesSelected, numFilesQueued) {
if (numFilesQueued>0) {
ls.photoset.addPhotoEmpty();
}
}
this.swfHandlerUploadSuccess = function(e, file, serverData) {
ls.photoset.addPhoto(jQuery.parseJSON(serverData));
}
this.swfHandlerUploadComplete = function(e, file, next) {
if (next>0) {
ls.photoset.addPhotoEmpty();
}
}
this.addPhotoEmpty = function() {
template = '<li id="photoset_photo_empty"><img src="'+DIR_STATIC_SKIN + '/images/loader.gif'+'" alt="image" style="margin-left: 35px;margin-top: 20px;" />'
+'<div id="photoset_photo_empty_progress" style="height: 60px;width: 350px;padding: 3px;border: 1px solid #DDDDDD;"></div><br /></li>';
$('#swfu_images').append(template);
}
this.addPhoto = function(response) {
$('#photoset_photo_empty').remove();
if (!response.bStateError) {
@ -106,7 +106,7 @@ ls.photoset =( function ($) {
{
if (this.isLoading) return;
this.isLoading=true;
ls.ajax(aRouter['photoset']+'getmore', {'topic_id':topic_id, 'last_id':this.idLast}, function(result){
this.isLoading=false;
if (!result.bStateError) {
@ -154,23 +154,14 @@ ls.photoset =( function ($) {
this.showForm = function()
{
var $select = $('#photoset-start-upload');
if ($select.length) {
var pos = $select.offset();
w = $select.outerWidth();
h = $select.outerHeight();
t = pos.top + h - 30 + 'px';
l = pos.left - 15 + 'px';
$('#photoset-upload-form').css({'top':t,'left':l});
}
$('#photoset-upload-form').show();
$('#photoset-upload-form').jqmShow();
}
this.showMainPhoto = function(id) {
$('#photoset-main-preview-'+id).css('width',$('#photoset-main-image-'+id).outerWidth());
$('#photoset-photo-count-'+id).show();
$('#photoset-photo-desc-'+id).show();
}
return this;
}).call(ls.photoset || {},jQuery);

View file

@ -8,31 +8,35 @@
(function($) {
$.fn.tab = function (options) {
var tabsSelector = '[data-toggle=tabs]';
this.each(function () {
var
var
$this = $(this),
$tabFirst = $this.closest(tabsSelector).find('li').eq(0);
if (!$tabFirst.hasClass('active')) activateTab($tabFirst);
$tabFirst = $this.closest($.tab.tabsSelector).find('li').eq(0);
if (!$tabFirst.hasClass('active')) $.tab.activate($tabFirst);
// Click
$this.click(function () {
activateTab($this);
$.tab.activate($this);
return false;
});
});
};
// Activate tab
function activateTab (tab) {
$.fn.tabActivate = function () {
$.tab.activate($(this));
};
$.tab = {
tabsSelector: '[data-toggle=tabs]',
activate: function (tab) {
var
$pane = $('#' + tab.data('tab-target')),
dropdown = tab.closest('ul').parent('li');
tab.addClass('active').closest(tabsSelector).find('li').not(tab).removeClass('active');
tab.addClass('active').closest(this.tabsSelector).find('li').not(tab).removeClass('active');
if (dropdown.length > 0) dropdown.addClass('active');
$pane.show().parent('.tabs-content').find('.tab-pane').not($pane).hide();
$pane.show().parent('[data-toggle=tab-content]').find('[data-toggle=tab-pane]').not($pane).hide();
}
};
})(jQuery);

View file

@ -7,7 +7,7 @@
<div class="modal" id="userfield_form">
<header class="modal-header">
<h3>{$aLang.user_field_admin_title_add}</h3>
<a href="#" class="close jqmClose"></a>
<a href="#" class="modal-close" data-toggle="modal-close"></a>
</header>
<form class="modal-content">
@ -21,21 +21,21 @@
<p><label for="user_fields_form_name">{$aLang.userfield_form_name}:</label>
<input type="text" id="user_fields_form_name" class="input-text input-width-full" /></p>
<p><label for="user_fields_form_title">{$aLang.userfield_form_title}:</label>
<input type="text" id="user_fields_form_title" class="input-text input-width-full" /></p>
<p><label for="user_fields_form_pattern">{$aLang.userfield_form_pattern}:</label>
<input type="text" id="user_fields_form_pattern" class="input-text input-width-full" /></p>
<input type="hidden" id="user_fields_form_action" />
<input type="hidden" id="user_fields_form_id" />
<button type="button" onclick="ls.userfield.applyForm(); return false;" class="button button-primary">{$aLang.user_field_add}</button>
</form>
</div>
<a href="javascript:ls.userfield.showAddForm()" class="link-dotted" id="userfield_form_show">{$aLang.user_field_add}</a>
<br /><br />
@ -47,12 +47,12 @@
/ <span class="userfield_admin_pattern">{$oField->getPattern()|escape:"html"}</span>
<div class="userfield-actions">
<a href="javascript:ls.userfield.showEditForm({$oField->getId()})" title="{$aLang.user_field_update}" class="icon-edit"></a>
<a href="javascript:ls.userfield.showEditForm({$oField->getId()})" title="{$aLang.user_field_update}" class="icon-edit"></a>
<a href="javascript:ls.userfield.deleteUserfield({$oField->getId()})" title="{$aLang.user_field_delete}" class="icon-remove"></a>
</div>
</li>
{/foreach}
</ul>
{include file='footer.tpl'}

View file

@ -11,13 +11,13 @@
{if $oUserCurrent and $oUserCurrent->isAdministrator()}
<div id="blog_delete_form" class="modal">
<div id="modal-blog-delete" class="modal">
<header class="modal-header">
<h3>{$aLang.blog_admin_delete_title}</h3>
<a href="#" class="close jqmClose"></a>
<a href="#" class="modal-close" data-toggle="modal-close"></a>
</header>
<form action="{router page='blog'}delete/{$oBlog->getId()}/" method="POST" class="modal-content">
<p><label for="topic_move_to">{$aLang.blog_admin_delete_move}:</label>
<select name="topic_move_to" id="topic_move_to" class="input-width-full">
@ -30,7 +30,7 @@
</optgroup>
{/if}
</select></p>
<input type="hidden" value="{$LIVESTREET_SECURITY_KEY}" name="security_ls_key" />
<button type="submit" class="button button-primary">{$aLang.blog_delete}</button>
</form>
@ -47,14 +47,14 @@
<a href="#" class="vote-down" onclick="return ls.vote.vote({$oBlog->getId()},this,-1,'blog');"></a>
<div id="vote_total_blog_{$oBlog->getId()}" class="vote-count count" title="{$aLang.blog_vote_count}: {$oBlog->getCountVote()}">{if $oBlog->getRating() > 0}+{/if}{$oBlog->getRating()}</div>
</div>
<img src="{$oBlog->getAvatarPath(48)}" alt="avatar" class="avatar" />
<h2>{if $oBlog->getType()=='close'}<i title="{$aLang.blog_closed}" class="icon icon-lock"></i> {/if}{$oBlog->getTitle()|escape:'html'}</h2>
<ul class="actions">
<li><a href="{router page='rss'}blog/{$oBlog->getUrl()}/" class="rss">RSS</a></li>
{if $oUserCurrent and $oUserCurrent->getId()!=$oBlog->getOwnerId()}
@ -64,7 +64,7 @@
<li>
<a href="{router page='blog'}edit/{$oBlog->getId()}/" title="{$aLang.blog_edit}" class="edit">{$aLang.blog_edit}</a></li>
{if $oUserCurrent->isAdministrator()}
<li><a href="#" title="{$aLang.blog_delete}" id="blog_delete_show" class="delete">{$aLang.blog_delete}</a>
<li><a href="#" title="{$aLang.blog_delete}" data-toggle="modal" data-modal-target="modal-blog-delete" class="delete">{$aLang.blog_delete}</a>
{else}
<a href="{router page='blog'}delete/{$oBlog->getId()}/?security_ls_key={$LIVESTREET_SECURITY_KEY}" title="{$aLang.blog_delete}" onclick="return confirm('{$aLang.blog_admin_delete_confirm}');" >{$aLang.blog_delete}</a>
{/if}
@ -72,44 +72,44 @@
{/if}
</ul>
</header>
<div class="blog-more-content" id="blog-more-content" style="display: none;">
<div class="blog-content">
<p class="blog-description">{$oBlog->getDescription()}</p>
</div>
<footer class="blog-footer">
{hook run='blog_info_begin' oBlog=$oBlog}
<strong>{$aLang.blog_user_administrators} ({$iCountBlogAdministrators}):</strong>
<strong>{$aLang.blog_user_administrators} ({$iCountBlogAdministrators}):</strong>
<a href="{$oUserOwner->getUserWebPath()}" class="user"><i class="icon-user"></i>{$oUserOwner->getLogin()}</a>
{if $aBlogAdministrators}
{if $aBlogAdministrators}
{foreach from=$aBlogAdministrators item=oBlogUser}
{assign var="oUser" value=$oBlogUser->getUser()}
{assign var="oUser" value=$oBlogUser->getUser()}
<a href="{$oUser->getUserWebPath()}" class="user"><i class="icon-user"></i>{$oUser->getLogin()}</a>
{/foreach}
{/if}<br />
{/foreach}
{/if}<br />
<strong>{$aLang.blog_user_moderators} ({$iCountBlogModerators}):</strong>
{if $aBlogModerators}
{foreach from=$aBlogModerators item=oBlogUser}
{assign var="oUser" value=$oBlogUser->getUser()}
{if $aBlogModerators}
{foreach from=$aBlogModerators item=oBlogUser}
{assign var="oUser" value=$oBlogUser->getUser()}
<a href="{$oUser->getUserWebPath()}" class="user"><i class="icon-user"></i>{$oUser->getLogin()}</a>
{/foreach}
{/foreach}
{else}
{$aLang.blog_user_moderators_empty}
{/if}<br />
<strong>{$aLang.blog_user_readers} ({$iCountBlogUsers}):</strong>
{if $aBlogUsers}
{foreach from=$aBlogUsers item=oBlogUser}
{assign var="oUser" value=$oBlogUser->getUser()}
<a href="{$oUser->getUserWebPath()}" class="user"><i class="icon-user"></i>{$oUser->getLogin()}</a>
{/foreach}
{if count($aBlogUsers) < $iCountBlogUsers}
<br /><a href="{$oBlog->getUrlFull()}users/">{$aLang.blog_user_readers_all}</a>
{/if}
@ -119,7 +119,7 @@
{hook run='blog_info_end' oBlog=$oBlog}
</footer>
</div>
<a href="#" class="blog-more" id="blog-more" onclick="return ls.blog.toggleInfo()">{$aLang.blog_expand_info}</a>
</div>

View file

@ -23,78 +23,78 @@
<form id="photoset-upload-form" method="POST" enctype="multipart/form-data" onsubmit="return false;" class="modal modal-image-upload">
<header class="modal-header">
<h3>{$aLang.uploadimg}</h3>
<a href="#" class="close jqmClose"></a>
<a href="#" class="modal-close" data-toggle="modal-close"></a>
</header>
<div id="topic-photo-upload-input" class="topic-photo-upload-input modal-content">
<label for="photoset-upload-file">{$aLang.topic_photoset_choose_image}:</label>
<input type="file" id="photoset-upload-file" name="Filedata" /><br><br>
<button type="submit" class="button button-primary" onclick="ls.photoset.upload();">{$aLang.topic_photoset_upload_choose}</button>
<button type="submit" class="button" onclick="ls.photoset.closeForm();">{$aLang.topic_photoset_upload_close}</button>
<input type="hidden" name="is_iframe" value="true" />
<input type="hidden" name="topic_id" value="{$_aRequest.topic_id}" />
</div>
</form>
{hook run='add_topic_photoset_begin'}
<form action="" method="POST" enctype="multipart/form-data" id="form-topic-add">
{hook run='form_add_topic_photoset_begin'}
<input type="hidden" name="security_ls_key" value="{$LIVESTREET_SECURITY_KEY}" />
<input type="hidden" name="security_ls_key" value="{$LIVESTREET_SECURITY_KEY}" />
<p><label for="blog_id">{$aLang.topic_create_blog}</label>
<select name="blog_id" id="blog_id" onChange="ls.blog.loadInfo(jQuery(this).val());" class="input-width-full">
<option value="0">{$aLang.topic_create_blog_personal}</option>
{foreach from=$aBlogsAllow item=oBlog}
<option value="{$oBlog->getId()}" {if $_aRequest.blog_id==$oBlog->getId()}selected{/if}>{$oBlog->getTitle()|escape:'html'}</option>
{/foreach}
{/foreach}
</select>
<small class="note">{$aLang.topic_create_blog_notice}</small></p>
<script type="text/javascript">
jQuery(document).ready(function($){
ls.blog.loadInfo($('#blog_id').val());
});
</script>
<p><label for="topic_title">{$aLang.topic_create_title}:</label>
<input type="text" id="topic_title" name="topic_title" value="{$_aRequest.topic_title}" class="input-text input-width-full" /><br />
<small class="note">{$aLang.topic_create_title_notice}</small></p>
<p><label for="topic_text">{$aLang.topic_create_text}:</label>
<textarea name="topic_text" class="mce-editor markitup-editor input-width-full" id="topic_text" rows="20">{$_aRequest.topic_text}</textarea>
{if !$oConfig->GetValue('view.tinymce')}
{include file='tags_help.tpl' sTagsTargetId="topic_text"}
{/if}
</p>
<div class="topic-photo-upload">
<h2>{$aLang.topic_photoset_upload_title}</h2>
<div class="topic-photo-upload-rules">
{$aLang.topic_photoset_upload_rules|ls_lang:"SIZE%%`$oConfig->get('module.topic.photoset.photo_max_size')`":"COUNT%%`$oConfig->get('module.topic.photoset.count_photos_max')`"}
</div>
<input type="hidden" name="topic_main_photo" id="topic_main_photo" value="{$_aRequest.topic_main_photo}" />
<ul id="swfu_images">
{if count($aPhotos)}
{foreach from=$aPhotos item=oPhoto}
{if $_aRequest.topic_main_photo && $_aRequest.topic_main_photo == $oPhoto->getId()}
{assign var=bIsMainPhoto value=true}
{/if}
<li id="photo_{$oPhoto->getId()}" {if $bIsMainPhoto}class="marked-as-preview"{/if}>
<img src="{$oPhoto->getWebPath('100crop')}" alt="image" />
<textarea onBlur="ls.photoset.setPreviewDescription({$oPhoto->getId()}, this.value)">{$oPhoto->getDescription()}</textarea><br />
@ -107,27 +107,27 @@
{/if}
</span>
</li>
{assign var=bIsMainPhoto value=false}
{/foreach}
{/if}
</ul>
<a href="javascript:ls.photoset.showForm()" id="photoset-start-upload">{$aLang.topic_photoset_upload_choose}</a>
<a href="#" class="link-dotted" data-toggle="modal" data-modal-target="photoset-upload-form">{$aLang.topic_photoset_upload_choose}</a>
</div>
<p><label for="topic_tags">{$aLang.topic_create_tags}:</label>
<input type="text" id="topic_tags" name="topic_tags" value="{$_aRequest.topic_tags}" class="input-text input-width-full autocomplete-tags-sep" /><br />
<small class="note">{$aLang.topic_create_tags_notice}</small></p>
<p><label for="topic_forbid_comment">
<input type="checkbox" id="topic_forbid_comment" name="topic_forbid_comment" class="input-checkbox" value="1" {if $_aRequest.topic_forbid_comment==1}checked{/if} />
{$aLang.topic_create_forbid_comment}</label>
<small class="note">{$aLang.topic_create_forbid_comment_notice}</small></p>
{if $oUserCurrent->isAdministrator()}
<p><label for="topic_publish_index">
<input type="checkbox" id="topic_publish_index" name="topic_publish_index" class="input-checkbox" value="1" {if $_aRequest.topic_publish_index==1}checked{/if} />
@ -136,17 +136,17 @@
{/if}
<input type="hidden" name="topic_type" value="photoset" />
{hook run='form_add_topic_photoset_end'}
<button type="submit" name="submit_topic_publish" id="submit_topic_publish" class="button button-primary fl-r">{$aLang.topic_create_submit_publish}</button>
<button type="submit" name="submit_preview" onclick="ls.topic.preview('form-topic-add','text_preview'); return false;" class="button">{$aLang.topic_create_submit_preview}</button>
<button type="submit" name="submit_topic_save" id="submit_topic_save" class="button">{$aLang.topic_create_submit_save}</button>
</form>
<div class="topic-preview" id="text_preview"></div>
{hook run='add_topic_photoset_end'}

View file

@ -3,16 +3,16 @@
{elseif $oUserFriend and $oUserFriend->getStatusTo()==$USER_FRIEND_REJECT and $oUserFriend->getStatusFrom()==$USER_FRIEND_OFFER and $oUserFriend->getUserTo()==$oUserCurrent->getId()}
<li id="add_friend_item"><a href="#" title="{$aLang.user_friend_add}" onclick="return ls.user.addFriend(this,{$oUserProfile->getId()},'accept');">{$aLang.user_friend_add}</a></li>
{elseif $oUserFriend and $oUserFriend->getFriendStatus()==$USER_FRIEND_OFFER+$USER_FRIEND_REJECT and $oUserFriend->getUserTo()!=$oUserCurrent->getId()}
<li>{$aLang.user_friend_offer_reject}</li>
<li>{$aLang.user_friend_offer_reject}</li>
{elseif $oUserFriend and $oUserFriend->getFriendStatus()==$USER_FRIEND_OFFER+$USER_FRIEND_NULL and $oUserFriend->getUserFrom()==$oUserCurrent->getId()}
<li>{$aLang.user_friend_offer_send}</li>
<li>{$aLang.user_friend_offer_send}</li>
{elseif $oUserFriend and $oUserFriend->getFriendStatus()==$USER_FRIEND_OFFER+$USER_FRIEND_NULL and $oUserFriend->getUserTo()==$oUserCurrent->getId()}
<li id="add_friend_item"><a href="#" title="{$aLang.user_friend_add}" onclick="return ls.user.addFriend(this,{$oUserProfile->getId()},'accept');">{$aLang.user_friend_add}</a></li>
{elseif !$oUserFriend}
<div id="add_friend_form" class="modal">
<header class="modal-header">
<h3>{$aLang.profile_add_friend}</h3>
<a href="#" class="close jqmClose"></a>
<a href="#" class="modal-close" data-toggle="modal-close"></a>
</header>
<form onsubmit="return ls.user.addFriend(this,{$oUserProfile->getId()},'add');" class="modal-content">
@ -22,7 +22,7 @@
<button type="submit" class="button button-primary">{$aLang.user_friend_add_submit}</button>
</form>
</div>
<li id="add_friend_item"><a href="#" title="{$aLang.user_friend_add}" id="add_friend_show">{$aLang.user_friend_add}</a></li>
<li id="add_friend_item"><a href="#" title="{$aLang.user_friend_add}" data-toggle="modal" data-modal-target="add_friend_form">{$aLang.user_friend_add}</a></li>
{else}
<li id="add_friend_item"><a href="#" title="{$aLang.user_friend_add}" onclick="return ls.user.addFriend(this,{$oUserProfile->getId()},'link');">{$aLang.user_friend_add}</a></li>
{/if}

View file

@ -1,56 +1,15 @@
/* --------------------------------------------
ÌÎÄÀËÜÍÛÅ ÎÊÍÀ
-------------------------------------------- */
.modal {
display: none;
position: fixed;
top: 25%;
left: 50%;
width: 300px;
margin-left: -150px;
color: #333;
border: 1px solid #666;
background-color: #fff;
border-radius: 5px;
-webkit-box-shadow: 0 0 15px rgba(0,0,0,.5); box-shadow: 0 0 15px rgba(0,0,0,.5);
overflow: hidden;
}
.modal .close {
position: absolute;
top: 14px;
right: 14px;
width: 14px;
height: 14px;
background: url(../images/icons.png) -312px 0 no-repeat;
opacity: .3;
filter: alpha(opacity=30);
}
.modal .close:hover { opacity: 1; filter: alpha(opacity=100); }
.modal .modal-header { background: #fafafa; border-bottom: 1px solid #f7f7f7; padding: 5px 20px; }
.modal .modal-header h3 { font-size: 20px; font-weight: bold; margin-right: 20px; }
.modal .modal-content { padding: 20px; }
.jqmOverlay { background-color: #000; }
* html .modal { position: absolute; top: expression((document.documentElement.scrollTop || document.body.scrollTop) + Math.round(17 * (document.documentElement.offsetHeight || document.body.clientHeight) / 100) + 'px'); }
/*
* Modal
*/
/* Ôîðìà âõîäà */
.modal.modal-login { width: 450px; margin-left: -225px; top: 50px; }
.modal.modal-login .nav { margin-bottom: 30px; }
/* Äîáàâëåíèå òîïèêà */
.modal.modal-write { width: 740px; margin-left: -370px; top: 50px; }
.modal.modal-write .modal-content { padding: 20px 10px 0; *padding: 20px 10px 15px; }
.modal.modal-write .write-list { *overflow: hidden; *zoom: 1; }
.modal.modal-write .write-list li { width: 100px; margin: 0 10px 20px; text-align: center; overflow: hidden; display: inline-table; *float: left; }
.modal.modal-write .write-list li a { color: #39576B; }
/* Write
-------------------------------------------------- */
.modal.modal-write { width: 740px; }
.modal.modal-write .modal-content { padding: 20px 10px 0; *padding: 20px 10px 15px; }
.modal.modal-write .write-list { *overflow: hidden; *zoom: 1; }
.modal.modal-write .write-list li { width: 100px; margin: 0 10px 20px; text-align: center; overflow: hidden; display: inline-table; *float: left; }
.modal.modal-write .write-list li a { color: #39576B; }
.modal.modal-write .write-list li .write-item-image { display: block; width: 100px; height: 100px; border-radius: 3px; text-align: center; background: url(../images/write.png) no-repeat; margin-bottom: 10px; }
.modal.modal-write .write-list li.write-item-type-topic .write-item-image { background-position: 0 0; }
@ -58,11 +17,4 @@
.modal.modal-write .write-list li.write-item-type-link .write-item-image { background-position: -200px 0; }
.modal.modal-write .write-list li.write-item-type-photoset .write-item-image { background-position: -300px 0; }
.modal.modal-write .write-list li.write-item-type-blog .write-item-image { background-position: -400px 0; }
.modal.modal-write .write-list li.write-item-type-draft .write-item-image { background-position: -500px 0; }
/* Upload Image */
.modal-image-upload { width: 500px; margin-left: -250px; }
.modal.modal-write .write-list li.write-item-type-draft .write-item-image { background-position: -500px 0; }

View file

@ -13,7 +13,7 @@
{if !$sImgToLoad}
{assign var="sImgToLoad" value="topic_text"}
{/if}
{include file='window_load_img.tpl' sToLoad=$sImgToLoad}
{include file='modals/modal_load_img.tpl' sToLoad=$sImgToLoad}
{if !$sSettingsTinymce}
{assign var="sSettingsMarkitup" value="ls.settings.getMarkitup()"}

View file

@ -2,20 +2,20 @@
</div> <!-- /content -->
</div> <!-- /content-wrapper -->
{if !$noSidebar && $sidebarPosition != 'left'}
{include file='sidebar.tpl'}
{/if}
</div> <!-- /wrapper -->
<footer id="footer">
<div class="copyright">
{hook run='copyright'}
</div>
Автор шаблона &mdash; <a href="http://deniart.ru">deniart</a>
{hook run='footer_end'}
</footer>

View file

@ -7,12 +7,12 @@
<head>
{hook run='html_head_begin'}
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>{$sHtmlTitle}</title>
<meta name="description" content="{$sHtmlDescription}">
<meta name="keywords" content="{$sHtmlKeywords}">
@ -28,12 +28,12 @@
{if $sHtmlCanonical}
<link rel="canonical" href="{$sHtmlCanonical}" />
{/if}
{if $bRefreshToHome}
<meta HTTP-EQUIV="Refresh" CONTENT="3; URL={cfg name='path.root.web'}/">
{/if}
<script type="text/javascript">
var DIR_WEB_ROOT = '{cfg name="path.root.web"}';
var DIR_STATIC_SKIN = '{cfg name="path.static.skin"}';
@ -41,7 +41,7 @@
var LIVESTREET_SECURITY_KEY = '{$LIVESTREET_SECURITY_KEY}';
var SESSION_ID = '{$_sPhpSessionId}';
var BLOG_USE_TINYMCE = '{cfg name="view.tinymce"}';
var TINYMCE_LANG = 'en';
{if $oConfig->GetValue('lang.current') == 'russian'}
TINYMCE_LANG = 'ru';
@ -52,19 +52,19 @@
aRouter['{$sPage}'] = '{$sPath}';
{/foreach}
</script>
{$aHtmlHeadFiles.js}
<script type="text/javascript">
var tinyMCE = false;
ls.lang.load({json var = $aLangJs});
ls.registry.set('comment_max_tree',{json var=$oConfig->Get('module.comment.max_tree')});
ls.registry.set('block_stream_show_tip',{json var=$oConfig->Get('block.stream.show_tip')});
</script>
{if {cfg name='view.grid.type'} == 'fluid'}
<style>
#container {
@ -79,8 +79,8 @@
}
</style>
{/if}
{hook run='html_head_end'}
</head>
@ -88,7 +88,7 @@
{if $oUserCurrent}
{assign var=body_classes value=$body_classes|cat:' ls-user-role-user'}
{if $oUserCurrent->isAdministrator()}
{assign var=body_classes value=$body_classes|cat:' ls-user-role-admin'}
{/if}
@ -111,15 +111,15 @@
<body class="{$body_classes} width-{cfg name='view.grid.type'}">
{hook run='body_begin'}
{if $oUserCurrent}
{include file='window_write.tpl'}
{include file='window_favourite_form_tags.tpl'}
{include file='modals/modal_write.tpl'}
{include file='modals/modal_favourite_form_tags.tpl'}
{else}
{include file='window_login.tpl'}
{include file='modals/modal_login.tpl'}
{/if}
<div id="container" class="{hook run='container_class'}">
{include file='header_top.tpl'}
@ -129,13 +129,13 @@
{if !$noSidebar && $sidebarPosition == 'left'}
{include file='sidebar.tpl'}
{/if}
<div id="content-wrapper" class="{if $sidebarPosition == 'left'}content-right{/if}">
<div id="content" role="main"
<div id="content" role="main"
class="{if $noSidebar}content-full-width{/if}"
{if $sMenuItemSelect=='profile'}itemscope itemtype="http://data-vocabulary.org/Person"{/if}>
{include file='nav_content.tpl'}
{include file='system_message.tpl'}
{hook run='content_begin'}

View file

@ -5,7 +5,7 @@
</form>
{hook run='userbar_nav'}
<ul class="nav nav-userbar">
{if $oUserCurrent}
<li class="nav-userbar-username">
@ -14,7 +14,7 @@
{$oUserCurrent->getLogin()}
</a>
</li>
<li><a href="{router page='topic'}add/" class="write" id="modal_write_show">{$aLang.block_create}</a></li>
<li><a href="{router page='topic'}add/" data-toggle="modal" data-modal-target="modal-write">{$aLang.block_create}</a></li>
<li><a href="{$oUserCurrent->getUserWebPath()}favourites/topics/">{$aLang.user_menu_profile_favourites}</a></li>
<li><a href="{router page='talk'}" {if $iUserCurrentCountTalkNew}class="new-messages"{/if} id="new_messages" title="{if $iUserCurrentCountTalkNew}{$aLang.user_privat_messages_new}{/if}">{$aLang.user_privat_messages}{if $iUserCurrentCountTalkNew} ({$iUserCurrentCountTalkNew}){/if}</a></li>
<li><a href="{router page='settings'}profile/">{$aLang.user_settings}</a></li>
@ -22,8 +22,8 @@
<li><a href="{router page='login'}exit/?security_ls_key={$LIVESTREET_SECURITY_KEY}">{$aLang.exit}</a></li>
{else}
{hook run='userbar_item'}
<li><a href="{router page='login'}" class="js-login-form-show">{$aLang.user_login_submit}</a></li>
<li><a href="{router page='registration'}" class="js-registration-form-show">{$aLang.registration_submit}</a></li>
<li><a href="{router page='login'}" onclick="jQuery('#modal-login').modalShow({ onShow: $('[data-tab-target=tab-pane-login]').tabActivate(), center: false }); return false;">{$aLang.user_login_submit}</a></li>
<li><a href="#" onclick="jQuery('#modal-login').modalShow({ onShow: $('[data-tab-target=tab-pane-registration]').tabActivate(), center: false }); return false;">{$aLang.registration_submit}</a></li>
{/if}
</ul>
</nav>

View file

@ -1,9 +1,9 @@
jQuery(document).ready(function($){
// Хук начала инициализации javascript-составляющих шаблона
ls.hook.run('ls_template_init_start',[],window);
$('html').removeClass('no-js');
// Определение браузера
if ($.browser.opera) {
$('body').addClass('opera opera' + parseInt($.browser.version));
@ -23,19 +23,10 @@ jQuery(document).ready(function($){
// Dropdowns
$('[data-toggle=dropdown]').dropdown();
// Всплывающие окна
$('#window_login_form').jqm();
$('#blog_delete_form').jqm({trigger: '#blog_delete_show', toTop: true});
$('#add_friend_form').jqm({trigger: '#add_friend_show', toTop: true});
$('#window_upload_img').jqm();
$('#userfield_form').jqm();
$('#favourite-form-tags').jqm();
$('#modal_write').jqm({trigger: '#modal_write_show'});
$('#foto-resize').jqm({modal: true, toTop: true});
$('#avatar-resize').jqm({modal: true, toTop: true});
$('#userfield_form').jqm({toTop: true});
$('#photoset-upload-form').jqm({trigger: '#photoset-start-upload'});
// Modal
$('[data-toggle=modal]').modal();
$('.js-registration-form-show').click(function(){
if (ls.blocks.switchTab('registration','popup-login')) {
@ -54,43 +45,43 @@ jQuery(document).ready(function($){
}
return false;
});
// Datepicker
/**
* TODO: навесить языки на datepicker
*/
$('.date-picker').datepicker({
$('.date-picker').datepicker({
dateFormat: 'dd.mm.yy',
dayNamesMin: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],
monthNames: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
firstDay: 1
});
// Поиск по тегам
$('.js-tag-search-form').submit(function(){
window.location = aRouter['tag']+encodeURIComponent($(this).find('.js-tag-search').val())+'/';
return false;
});
// Автокомплит
ls.autocomplete.add($(".autocomplete-tags-sep"), aRouter['ajax']+'autocompleter/tag/', true);
ls.autocomplete.add($(".autocomplete-tags"), aRouter['ajax']+'autocompleter/tag/', false);
ls.autocomplete.add($(".autocomplete-users-sep"), aRouter['ajax']+'autocompleter/user/', true);
ls.autocomplete.add($(".autocomplete-users"), aRouter['ajax']+'autocompleter/user/', false);
// Скролл
$(window)._scrollable();
// Тул-бар топиков
ls.toolbar.topic.init();
// Кнопка "UP"
ls.toolbar.up.init();
// Всплывающие сообщения
if (ls.registry.get('block_stream_show_tip')) {
$('.js-title-comment, .js-title-topic').poshytip({
@ -127,7 +118,7 @@ jQuery(document).ready(function($){
liveEvents: true,
showTimeout: 100
});
$('.js-tip-help').poshytip({
className: 'infobox-standart',
alignTo: 'target',
@ -146,11 +137,11 @@ jQuery(document).ready(function($){
// подсветка кода
prettyPrint();
// эмуляция border-sizing в IE
var inputs = $('input.input-text, textarea');
ls.ie.bordersizing(inputs);
// эмуляция placeholder'ов в IE
inputs.placeholder();
@ -226,23 +217,23 @@ jQuery(document).ready(function($){
$.markItUp({target: target, replaceWith: s});
return false;
});
// Фикс бага с z-index у встроенных видео
$("iframe").each(function(){
var ifr_source = $(this).attr('src');
if(ifr_source) {
var wmode = "wmode=opaque";
if (ifr_source.indexOf('?') != -1)
if (ifr_source.indexOf('?') != -1)
$(this).attr('src',ifr_source+'&'+wmode);
else
else
$(this).attr('src',ifr_source+'?'+wmode);
}
});
// Хук конца инициализации javascript-составляющих шаблона
ls.hook.run('ls_template_init_end',[],window);
});

View file

@ -2,17 +2,17 @@
<div id="favourite-form-tags" class="modal">
<header class="modal-header">
<h3>{$aLang.add_favourite_tags}</h3>
<a href="#" class="close jqmClose"></a>
<a href="#" class="modal-close" data-toggle="modal-close"></a>
</header>
<form onsubmit="return ls.favourite.saveTags(this);" class="modal-content">
<input type="hidden" name="target_type" value="" id="favourite-form-tags-target-type">
<input type="hidden" name="target_id" value="" id="favourite-form-tags-target-id">
<p><input type="text" name="tags" value="" id="favourite-form-tags-tags" class="autocomplete-tags-sep input-text input-width-full"></p>
<button type="submit" name="" class="button button-primary" />{$aLang.favourite_form_tags_button_save}</button>
<button type="submit" name="" class="button jqmClose" />{$aLang.favourite_form_tags_button_cancel}</button>
<button type="submit" name="" class="button" data-toggle="modal-close" />{$aLang.favourite_form_tags_button_cancel}</button>
</form>
</div>
{/if}

View file

@ -1,21 +1,21 @@
<div class="modal modal-image-upload" id="window_upload_img">
<header class="modal-header">
<h3>{$aLang.uploadimg}</h3>
<a href="#" class="close jqmClose"></a>
<a href="#" class="modal-close" data-toggle="modal-close"></a>
</header>
<div class="modal-content">
<ul class="nav nav-pills nav-pills-tabs">
<li class="active js-block-upload-img-item" data-type="pc"><a href="#">{$aLang.uploadimg_from_pc}</a></li>
<li class="js-block-upload-img-item" data-type="link"><a href="#">{$aLang.uploadimg_from_link}</a></li>
</ul>
<form method="POST" action="" enctype="multipart/form-data" id="block_upload_img_content_pc" onsubmit="return false;" class="tab-content js-block-upload-img-content" data-type="pc">
<p><label for="img_file">{$aLang.uploadimg_file}:</label>
<input type="file" name="img_file" id="img_file" value="" class="input-text input-width-full" /></p>
{hook run="uploadimg_source"}
<p>
<label for="form-image-align">{$aLang.uploadimg_align}:</label>
<select name="align" id="form-image-align" class="input-width-full">
@ -25,17 +25,17 @@
<option value="center">{$aLang.uploadimg_align_center}</option>
</select>
</p>
<p><label for="form-image-title">{$aLang.uploadimg_title}:</label>
<input type="text" name="title" id="form-image-title" value="" class="input-text input-width-full" /></p>
{hook run="uploadimg_additional"}
<button type="submit" class="button button-primary" onclick="ls.ajaxUploadImg('block_upload_img_content_pc','{$sToLoad}');">{$aLang.uploadimg_submit}</button>
<button type="submit" class="button jqmClose">{$aLang.uploadimg_cancel}</button>
<button type="submit" class="button " data-toggle="modal-close">{$aLang.uploadimg_cancel}</button>
</form>
<form method="POST" action="" enctype="multipart/form-data" id="block_upload_img_content_link" onsubmit="return false;" style="display: none;" class="tab-content js-block-upload-img-content" data-type="link">
<p><label for="img_file">{$aLang.uploadimg_url}:</label>
<input type="text" name="img_url" id="img_url" value="http://" class="input-text input-width-full" /></p>
@ -56,10 +56,8 @@
{hook run="uploadimg_link_additional"}
<button type="submit" class="button button-primary" onclick="ls.topic.insertImageToEditor(jQuery('#img_url').val(),jQuery('#form-image-url-align').val(),jQuery('#form-image-url-title').val());">{$aLang.uploadimg_link_submit_paste}</button>
{$aLang.or}
<button type="submit" class="button button-primary" onclick="ls.ajaxUploadImg('block_upload_img_content_link','{$sToLoad}');">{$aLang.uploadimg_link_submit_load}</button>
<button type="submit" class="button jqmClose">{$aLang.uploadimg_cancel}</button>
<button type="submit" class="button" data-toggle="modal-close">{$aLang.uploadimg_cancel}</button>
</form>
</div>
</div>

View file

@ -0,0 +1,146 @@
{if !$oUserCurrent}
<div class="modal modal-login" id="modal-login">
<header class="modal-header">
<h3>{$aLang.user_authorization}</h3>
<a href="#" class="modal-close" data-toggle="modal-close"></a>
</header>
<script type="text/javascript">
jQuery(function($){
$('#popup-login-form').bind('submit',function(){
ls.user.login('popup-login-form');
return false;
});
$('#popup-login-form-submit').attr('disabled',false);
});
</script>
<div class="modal-content">
<ul class="nav nav-pills" data-toggle="tabs">
<li data-toggle="tab" data-tab-target="tab-pane-login"><a href="#">{$aLang.user_login_submit}</a></li>
{if !$oConfig->GetValue('general.reg.invite')}
<li data-toggle="tab" data-tab-target="tab-pane-registration"><a href="#">{$aLang.registration}</a></li>
{else}
<li><a href="{router page='registration'}">{$aLang.registration}</a></li>
{/if}
<li data-toggle="tab" data-tab-target="tab-pane-reminder"><a href="#">{$aLang.password_reminder}</a></li>
</ul>
<div data-toggle="tab-content">
<div class="tab-pane" id="tab-pane-login" data-toggle="tab-pane">
{hook run='login_popup_begin'}
<form action="{router page='login'}" method="post" id="popup-login-form">
{hook run='form_login_popup_begin'}
<p><label for="popup-login">{$aLang.user_login}:</label>
<input type="text" name="login" id="popup-login" class="input-text input-width-300"></p>
<p><label for="popup-password">{$aLang.user_password}:</label>
<input type="password" name="password" id="popup-password" class="input-text input-width-300">
<small class="validate-error-hide validate-error-login"></small></p>
<p><label><input type="checkbox" name="remember" class="input-checkbox" checked> {$aLang.user_login_remember}</label></p>
{hook run='form_login_popup_end'}
<input type="hidden" name="return-path" value="{$PATH_WEB_CURRENT|escape:'html'}">
<button type="submit" name="submit_login" class="button button-primary" id="popup-login-form-submit" disabled="disabled">{$aLang.user_login_submit}</button>
</form>
{hook run='login_popup_end'}
</div>
{if !$oConfig->GetValue('general.reg.invite')}
<div class="tab-pane" id="tab-pane-registration" data-toggle="tab-pane">
<script type="text/javascript">
jQuery(document).ready(function($){
$('#popup-registration-form').find('input.js-ajax-validate').blur(function(e){
var aParams={ };
if ($(e.target).attr('name')=='password_confirm') {
aParams['password']=$('#popup-registration-user-password').val();
}
if ($(e.target).attr('name')=='password') {
aParams['password']=$('#popup-registration-user-password').val();
if ($('#popup-registration-user-password-confirm').val()) {
ls.user.validateRegistrationField('password_confirm',$('#popup-registration-user-password-confirm').val(),$('#popup-registration-form'),{ 'password': $(e.target).val() });
}
}
ls.user.validateRegistrationField($(e.target).attr('name'),$(e.target).val(),$('#popup-registration-form'),aParams);
});
$('#popup-registration-form').bind('submit',function(){
ls.user.registration('popup-registration-form');
return false;
});
$('#popup-registration-form-submit').attr('disabled',false);
});
</script>
{hook run='registration_begin' isPopup=true}
<form action="{router page='registration'}" method="post" id="popup-registration-form">
{hook run='form_registration_begin' isPopup=true}
<p><label for="popup-registration-login">{$aLang.registration_login}</label>
<input type="text" name="login" id="popup-registration-login" value="{$_aRequest.login}" class="input-text input-width-300 js-ajax-validate" />
<i class="icon-ok-green validate-ok-field-login" style="display: none"></i>
<i class="icon-question-sign js-tip-help" title="{$aLang.registration_login_notice}"></i>
<small class="validate-error-hide validate-error-field-login"></small></p>
<p><label for="popup-registration-mail">{$aLang.registration_mail}</label>
<input type="text" name="mail" id="popup-registration-mail" value="{$_aRequest.mail}" class="input-text input-width-300 js-ajax-validate" />
<i class="icon-ok-green validate-ok-field-mail" style="display: none"></i>
<i class="icon-question-sign js-tip-help" title="{$aLang.registration_mail_notice}"></i>
<small class="validate-error-hide validate-error-field-mail"></small></p>
<p><label for="popup-registration-user-password">{$aLang.registration_password}</label>
<input type="password" name="password" id="popup-registration-user-password" value="" class="input-text input-width-300 js-ajax-validate" />
<i class="icon-ok-green validate-ok-field-password" style="display: none"></i>
<i class="icon-question-sign js-tip-help" title="{$aLang.registration_password_notice}"></i>
<small class="validate-error-hide validate-error-field-password"></small></p>
<p><label for="popup-registration-user-password-confirm">{$aLang.registration_password_retry}</label>
<input type="password" value="" id="popup-registration-user-password-confirm" name="password_confirm" class="input-text input-width-300 js-ajax-validate" />
<i class="icon-ok-green validate-ok-field-password_confirm" style="display: none"></i>
<small class="validate-error-hide validate-error-field-password_confirm"></small></p>
{hookb run="popup_registration_captcha"}
<p><label for="popup-registration-captcha">{$aLang.registration_captcha}</label>
<img src="{cfg name='path.root.engine_lib'}/external/kcaptcha/index.php?{$_sPhpSessionName}={$_sPhpSessionId}"
onclick="this.src='{cfg name='path.root.engine_lib'}/external/kcaptcha/index.php?{$_sPhpSessionName}={$_sPhpSessionId}&n='+Math.random();"
class="captcha-image" />
<input type="text" name="captcha" id="popup-registration-captcha" value="" maxlength="3" class="input-text input-width-100 js-ajax-validate" />
<small class="validate-error-hide validate-error-field-captcha"></small></p>
{/hookb}
{hook run='form_registration_end' isPopup=true}
<input type="hidden" name="return-path" value="{$PATH_WEB_CURRENT|escape:'html'}">
<button type="submit" name="submit_register" class="button button-primary" id="popup-registration-form-submit" disabled="disabled">{$aLang.registration_submit}</button>
</form>
{hook run='registration_end' isPopup=true}
</div>
{/if}
<div class="tab-pane" id="tab-pane-reminder" data-toggle="tab-pane">
<script type="text/javascript">
jQuery(document).ready(function($){
$('#popup-reminder-form').bind('submit',function(){
ls.user.reminder('popup-reminder-form');
return false;
});
$('#popup-reminder-form-submit').attr('disabled',false);
});
</script>
<form action="{router page='login'}reminder/" method="POST" id="popup-reminder-form">
<p><label for="popup-reminder-mail">{$aLang.password_reminder_email}</label>
<input type="text" name="mail" id="popup-reminder-mail" class="input-text input-width-300" />
<small class="validate-error-hide validate-error-reminder"></small></p>
<button type="submit" name="submit_reminder" class="button button-primary" id="popup-reminder-form-submit" disabled="disabled">{$aLang.password_reminder_submit}</button>
</form>
</div>
</div>
</div>
</div>
{/if}

View file

@ -0,0 +1,38 @@
<div class="modal modal-write" id="modal-write">
<header class="modal-header">
<h3>{$aLang.block_create}</h3>
<a href="#" class="modal-close" data-toggle="modal-close"></a>
</header>
{strip}
<div class="modal-content">
<ul class="write-list">
<li class="write-item-type-topic">
<a href="{router page='topic'}add" class="write-item-image"></a>
<a href="{router page='topic'}add" class="write-item-link">{$aLang.block_create_topic_topic}</a>
</li>
<li class="write-item-type-poll">
<a href="{router page='question'}add" class="write-item-image"></a>
<a href="{router page='question'}add" class="write-item-link">{$aLang.block_create_topic_question}</a>
</li>
<li class="write-item-type-link">
<a href="{router page='link'}add" class="write-item-image"></a>
<a href="{router page='link'}add" class="write-item-link">{$aLang.block_create_topic_link}</a>
</li>
<li class="write-item-type-photoset">
<a href="{router page='photoset'}add" class="write-item-image"></a>
<a href="{router page='photoset'}add" class="write-item-link">{$aLang.block_create_topic_photoset}</a>
</li>
<li class="write-item-type-blog">
<a href="{router page='blog'}add" class="write-item-image"></a>
<a href="{router page='blog'}add" class="write-item-link">{$aLang.block_create_blog}</a>
</li>
<li class="write-item-type-draft">
<a href="{router page='topic'}saved/" class="write-item-image"></a>
<a href="{router page='topic'}saved/" class="write-item-link">{$aLang.topic_menu_saved} {if $iUserCurrentCountTopicDraft}({$iUserCurrentCountTopicDraft}){/if}</a>
</li>
{hook run='write_item' isPopup=true}
</ul>
</div>
{/strip}
</div>

View file

@ -6,7 +6,7 @@ $config['view']['theme'] = 'default';
/* Grid type:
*
*
* fluid - резина
* fixed - фиксированная ширина
*/
@ -21,9 +21,51 @@ $config['view']['grid']['fixed_width'] = 1000;
$config['head']['default']['js'] = Config::Get('head.default.js');
$config['head']['default']['js'][] = '___path.root.server___/templates/framework/js/dropdown.js';
$config['head']['default']['js'][] = '___path.root.server___/templates/framework/js/tab.js';
$config['head']['default']['js'] = array(
"___path.root.engine_lib___/external/html5shiv.js" => array('browser'=>'lt IE 9'),
"___path.root.engine_lib___/external/jquery/jquery.js",
"___path.root.engine_lib___/external/jquery/jquery-ui.js",
"___path.root.engine_lib___/external/jquery/jquery.notifier.js",
"___path.root.engine_lib___/external/jquery/jquery.scrollto.js",
"___path.root.engine_lib___/external/jquery/jquery.rich-array.min.js",
"___path.root.engine_lib___/external/jquery/markitup/jquery.markitup.js",
"___path.root.engine_lib___/external/jquery/jquery.form.js",
"___path.root.engine_lib___/external/jquery/jquery.jqplugin.js",
"___path.root.engine_lib___/external/jquery/jquery.cookie.js",
"___path.root.engine_lib___/external/jquery/jquery.serializejson.js",
"___path.root.engine_lib___/external/jquery/jquery.file.js",
"___path.root.engine_lib___/external/jquery/jcrop/jquery.Jcrop.js",
"___path.root.engine_lib___/external/jquery/poshytip/jquery.poshytip.js",
"___path.root.engine_lib___/external/jquery/jquery.placeholder.min.js",
"___path.root.engine_lib___/external/jquery/jquery.charcount.js",
"___path.root.engine_lib___/external/prettify/prettify.js",
"___path.root.server___/templates/framework/js/main.js",
"___path.root.server___/templates/framework/js/favourite.js",
"___path.root.server___/templates/framework/js/blocks.js",
"___path.root.server___/templates/framework/js/talk.js",
"___path.root.server___/templates/framework/js/vote.js",
"___path.root.server___/templates/framework/js/poll.js",
"___path.root.server___/templates/framework/js/subscribe.js",
"___path.root.server___/templates/framework/js/infobox.js",
"___path.root.server___/templates/framework/js/geo.js",
"___path.root.server___/templates/framework/js/wall.js",
"___path.root.server___/templates/framework/js/usernote.js",
"___path.root.server___/templates/framework/js/comments.js",
"___path.root.server___/templates/framework/js/blog.js",
"___path.root.server___/templates/framework/js/user.js",
"___path.root.server___/templates/framework/js/userfeed.js",
"___path.root.server___/templates/framework/js/userfield.js",
"___path.root.server___/templates/framework/js/stream.js",
"___path.root.server___/templates/framework/js/photoset.js",
"___path.root.server___/templates/framework/js/toolbar.js",
"___path.root.server___/templates/framework/js/settings.js",
"___path.root.server___/templates/framework/js/topic.js",
"___path.root.server___/templates/framework/js/hook.js",
'___path.root.server___/templates/framework/js/dropdown.js',
'___path.root.server___/templates/framework/js/tab.js',
'___path.root.server___/templates/framework/js/modal.js',
"http://yandex.st/share/share.js" => array('merge'=>false),
);
$config['head']['default']['js'][] = '___path.static.skin___/js/template.js';
$config['head']['default']['css'] = array(
@ -35,6 +77,7 @@ $config['head']['default']['css'] = array(
"___path.root.server___/templates/framework/css/buttons.css",
"___path.root.server___/templates/framework/css/forms.css",
"___path.root.server___/templates/framework/css/navs.css",
"___path.root.server___/templates/framework/css/modals.css",
// Template styles
"___path.static.skin___/css/base.css",
@ -50,8 +93,8 @@ $config['head']['default']['css'] = array(
"___path.static.skin___/css/topic.css",
"___path.static.skin___/css/comments.css",
"___path.static.skin___/css/blocks.css",
"___path.static.skin___/css/modals.css",
"___path.static.skin___/css/blog.css",
"___path.static.skin___/css/modals.css",
"___path.static.skin___/css/profile.css",
"___path.static.skin___/css/wall.css",
"___path.static.skin___/css/infobox.css",

View file

@ -1,145 +0,0 @@
{if !$oUserCurrent}
<div class="modal modal-login" id="window_login_form">
<header class="modal-header">
<h3>{$aLang.user_authorization}</h3>
<a href="#" class="close jqmClose"></a>
</header>
<script type="text/javascript">
jQuery(function($){
$('#popup-login-form').bind('submit',function(){
ls.user.login('popup-login-form');
return false;
});
$('#popup-login-form-submit').attr('disabled',false);
});
</script>
<div class="modal-content">
<ul class="nav nav-pills nav-pills-tabs">
<li class="active js-block-popup-login-item" data-type="login"><a href="#">{$aLang.user_login_submit}</a></li>
{if !$oConfig->GetValue('general.reg.invite')}
<li class="js-block-popup-login-item" data-type="registration"><a href="#">{$aLang.registration}</a></li>
{else}
<li><a href="{router page='registration'}">{$aLang.registration}</a></li>
{/if}
<li class="js-block-popup-login-item" data-type="reminder"><a href="#">{$aLang.password_reminder}</a></li>
</ul>
<div class="tab-content js-block-popup-login-content" data-type="login">
{hook run='login_popup_begin'}
<form action="{router page='login'}" method="post" id="popup-login-form">
{hook run='form_login_popup_begin'}
<p><label for="popup-login">{$aLang.user_login}:</label>
<input type="text" name="login" id="popup-login" class="input-text input-width-300"></p>
<p><label for="popup-password">{$aLang.user_password}:</label>
<input type="password" name="password" id="popup-password" class="input-text input-width-300">
<small class="validate-error-hide validate-error-login"></small></p>
<p><label><input type="checkbox" name="remember" class="input-checkbox" checked> {$aLang.user_login_remember}</label></p>
{hook run='form_login_popup_end'}
<input type="hidden" name="return-path" value="{$PATH_WEB_CURRENT|escape:'html'}">
<button type="submit" name="submit_login" class="button button-primary" id="popup-login-form-submit" disabled="disabled">{$aLang.user_login_submit}</button>
</form>
{hook run='login_popup_end'}
</div>
{if !$oConfig->GetValue('general.reg.invite')}
<div data-type="registration" class="tab-content js-block-popup-login-content" style="display:none;">
<script type="text/javascript">
jQuery(document).ready(function($){
$('#popup-registration-form').find('input.js-ajax-validate').blur(function(e){
var aParams={ };
if ($(e.target).attr('name')=='password_confirm') {
aParams['password']=$('#popup-registration-user-password').val();
}
if ($(e.target).attr('name')=='password') {
aParams['password']=$('#popup-registration-user-password').val();
if ($('#popup-registration-user-password-confirm').val()) {
ls.user.validateRegistrationField('password_confirm',$('#popup-registration-user-password-confirm').val(),$('#popup-registration-form'),{ 'password': $(e.target).val() });
}
}
ls.user.validateRegistrationField($(e.target).attr('name'),$(e.target).val(),$('#popup-registration-form'),aParams);
});
$('#popup-registration-form').bind('submit',function(){
ls.user.registration('popup-registration-form');
return false;
});
$('#popup-registration-form-submit').attr('disabled',false);
});
</script>
{hook run='registration_begin' isPopup=true}
<form action="{router page='registration'}" method="post" id="popup-registration-form">
{hook run='form_registration_begin' isPopup=true}
<p><label for="popup-registration-login">{$aLang.registration_login}</label>
<input type="text" name="login" id="popup-registration-login" value="{$_aRequest.login}" class="input-text input-width-300 js-ajax-validate" />
<i class="icon-ok-green validate-ok-field-login" style="display: none"></i>
<i class="icon-question-sign js-tip-help" title="{$aLang.registration_login_notice}"></i>
<small class="validate-error-hide validate-error-field-login"></small></p>
<p><label for="popup-registration-mail">{$aLang.registration_mail}</label>
<input type="text" name="mail" id="popup-registration-mail" value="{$_aRequest.mail}" class="input-text input-width-300 js-ajax-validate" />
<i class="icon-ok-green validate-ok-field-mail" style="display: none"></i>
<i class="icon-question-sign js-tip-help" title="{$aLang.registration_mail_notice}"></i>
<small class="validate-error-hide validate-error-field-mail"></small></p>
<p><label for="popup-registration-user-password">{$aLang.registration_password}</label>
<input type="password" name="password" id="popup-registration-user-password" value="" class="input-text input-width-300 js-ajax-validate" />
<i class="icon-ok-green validate-ok-field-password" style="display: none"></i>
<i class="icon-question-sign js-tip-help" title="{$aLang.registration_password_notice}"></i>
<small class="validate-error-hide validate-error-field-password"></small></p>
<p><label for="popup-registration-user-password-confirm">{$aLang.registration_password_retry}</label>
<input type="password" value="" id="popup-registration-user-password-confirm" name="password_confirm" class="input-text input-width-300 js-ajax-validate" />
<i class="icon-ok-green validate-ok-field-password_confirm" style="display: none"></i>
<small class="validate-error-hide validate-error-field-password_confirm"></small></p>
{hookb run="popup_registration_captcha"}
<p><label for="popup-registration-captcha">{$aLang.registration_captcha}</label>
<img src="{cfg name='path.root.engine_lib'}/external/kcaptcha/index.php?{$_sPhpSessionName}={$_sPhpSessionId}"
onclick="this.src='{cfg name='path.root.engine_lib'}/external/kcaptcha/index.php?{$_sPhpSessionName}={$_sPhpSessionId}&n='+Math.random();"
class="captcha-image" />
<input type="text" name="captcha" id="popup-registration-captcha" value="" maxlength="3" class="input-text input-width-100 js-ajax-validate" />
<small class="validate-error-hide validate-error-field-captcha"></small></p>
{/hookb}
{hook run='form_registration_end' isPopup=true}
<input type="hidden" name="return-path" value="{$PATH_WEB_CURRENT|escape:'html'}">
<button type="submit" name="submit_register" class="button button-primary" id="popup-registration-form-submit" disabled="disabled">{$aLang.registration_submit}</button>
</form>
{hook run='registration_end' isPopup=true}
</div>
{/if}
<div data-type="reminder" class="tab-content js-block-popup-login-content" style="display:none;">
<script type="text/javascript">
jQuery(document).ready(function($){
$('#popup-reminder-form').bind('submit',function(){
ls.user.reminder('popup-reminder-form');
return false;
});
$('#popup-reminder-form-submit').attr('disabled',false);
});
</script>
<form action="{router page='login'}reminder/" method="POST" id="popup-reminder-form">
<p><label for="popup-reminder-mail">{$aLang.password_reminder_email}</label>
<input type="text" name="mail" id="popup-reminder-mail" class="input-text input-width-300" />
<small class="validate-error-hide validate-error-reminder"></small></p>
<button type="submit" name="submit_reminder" class="button button-primary" id="popup-reminder-form-submit" disabled="disabled">{$aLang.password_reminder_submit}</button>
</form>
</div>
</div>
</div>
{/if}

View file

@ -1,9 +1,9 @@
<div class="modal modal-write" id="modal_write">
<div class="modal modal-write" id="modal-write">
<header class="modal-header">
<h3>{$aLang.block_create}</h3>
<a href="#" class="close jqmClose"></a>
<a href="#" class="close " data-toggle="modal-close"></a>
</header>
{strip}
<div class="modal-content">
<ul class="write-list">
@ -36,4 +36,3 @@
</div>
{/strip}
</div>