first commit

This commit is contained in:
2025-03-06 19:27:29 +01:00
commit f2698d53d0
6352 changed files with 822401 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
<?php
global $gdb;
$grid = new \gridEdit;
$grid -> gdb_opt = $gdb;
$grid -> include_plugins = true;
$grid -> title = 'Zapisz menu';
$grid -> fields = [
[
'db' => 'id',
'type' => 'hidden',
'value' => $this -> menu['id']
],
[
'name' => 'Nazwa',
'db' => 'name',
'type' => 'text',
'value' => $this -> menu['name'],
'params' => [ 'class' => 'require' ]
],
[
'name' => 'Aktywne',
'db' => 'status',
'type' => 'input_switch',
'checked' => $this -> menu['status'] ? true : false,
'replace' => [ 'array' => [ 0 => 'nie', 1 => 'tak' ] ]
]
];
$grid -> actions = [
'save' => [ 'url' => '/admin/pages/menu_save/', 'back_url' => '/admin/pages/view_list/' ],
'cancel' => [ 'url' => '/admin/pages/view_list/' ]
];
$grid -> persist_edit = true;
$grid -> id_param = 'id';
echo $grid -> draw();
?>
<script type="text/javascript">
$( document ).ready( function()
{
disable_menu();
});
</script>

View File

@@ -0,0 +1,89 @@
<?
global $gdb;
ob_start();
?>
<ol class="sortable" id="article-list">
<?
if ( is_array( $this -> articles ) ) foreach ( $this -> articles as $article )
{
?>
<li id="list_<?= $article['article_id'];?>">
<div class="content <? if ( !$article['status'] ) echo 'text-danger';?>"><span class="disclose"><span></span></span> <?= $article['title'];?></div>
</li>
<?
}
?>
</ol>
<?
$out = ob_get_clean();
$grid = new \gridEdit;
$grid -> gdb_opt = $gdb;
$grid -> include_plugins = true;
$grid -> default_buttons = false;
$grid -> external_code = $out;
$grid -> title = 'Lista artykułów';
$grid -> buttons = [
[
'label' => 'Wstecz',
'url' => '/admin/pages/view_list/',
'icon' => 'fa-reply',
'class' => 'btn-dark'
]
];
echo $grid -> draw();
?>
<script type="text/javascript" src="/libraries/jquery-nested-sortable/jquery.mjs.nestedSortable.js"></script>
<script type="text/javascript">
$( document ).ready( function()
{
$( 'ol.sortable' ).nestedSortable(
{
forcePlaceholderSize: true,
handle: 'div',
helper: 'clone',
items: 'li',
opacity: .6,
placeholder: 'placeholder',
revert: 250,
tabSize: 25,
tolerance: 'pointer',
toleranceElement: '> div',
maxLevels: 1,
isTree: true,
expandOnHover: 700,
save_articles_order: true
});
});
function save_articles_order()
{
articles = $( 'ol.sortable' ).nestedSortable( 'toArray', { startDepthCount: 0 } );
$.ajax(
{
type: 'POST',
cache: false,
url: '/admin/ajax.php',
data:
{
a: 'save_articles_order',
page_id: <?= $this -> page_id;?>,
articles: articles
},
beforeSend: function()
{
$.prompt( 'Trwa zapisywanie...', { title: 'Proszę czekać' } );
},
success: function( data )
{
$( '.jqibox' ).remove();
response = jQuery.parseJSON( data );
if ( response.status === 'error' )
create_error( response.msg );
}
});
}
</script>

View File

@@ -0,0 +1,514 @@
<script type="text/javascript">
var link_lang = '';
$(function ()
{
<? if ( is_array( $this -> languages ) ): foreach ( $this -> languages as $lg ):?>
google_preview('<?= $lg['id']; ?>', 0);
<? endforeach; endif;?>
disable_menu();
$('body').on('change', '#page_type', function ()
{
var page_type = $(this).val();
if (page_type == 0 || page_type == 1 || page_type == 2)
{
$('#articles_limit').parents('.form-group').show();
$('#link-content').addClass('hide');
}
else if (page_type == 3)
{
$('#link-content').removeClass('hide');
$('#articles_limit').parents('.form-group').hide();
}
else
{
$('#articles_limit').parents('.form-group').hide();
$('#link-content').addClass('hide');
}
});
$('#settings-tabs').easyResponsiveTabs({
width: 'auto',
fit: true,
tabidentify: 'settings-tabs',
type: 'vertical'
});
$('#languages-main').easyResponsiveTabs({
width: 'auto',
fit: true,
tabidentify: 'languages-main'
});
$('#languages-seo').easyResponsiveTabs({
width: 'auto',
fit: true,
tabidentify: 'languages-seo'
});
$('#languages-links').easyResponsiveTabs({
width: 'auto',
fit: true,
tabidentify: 'languages-links'
});
$('#page_type').trigger('change');
$('body').on('click', '.mfp-close', function (e)
{
e.preventDefault();
$.magnificPopup.close();
});
$('body').on('click', '.url-select', function ()
{
$('#link_' + link_lang).val($(this).attr('url'));
$.magnificPopup.close();
});
});
function generate_seo_links( lang, title, page_id, pid )
{
var default_language = '<?= \front\factory\Languages::default_language(); ?>';
if ( title === '' )
return false;
$.ajax(
{
type: 'POST',
cache: false,
url: '/admin/ajax.php',
data:
{
a: 'generate_seo_link',
title: title,
page_id: page_id,
lang: lang,
pid: pid
},
beforeSend: function ()
{
$('#overlay').show();
},
success: function (data)
{
$('#overlay').hide();
response = jQuery.parseJSON(data);
if ( response.status === 'ok' )
{
$('#seo_link_' + lang).val( response.seo_link );
google_preview( lang, pid );
}
else
create_error( response.msg );
}
});
}
function google_preview( lang_id, pid )
{
var default_language = '<?= \front\factory\Languages::default_language(); ?>';
var title = $( '#title_' + lang_id ).val();
var meta_title = $( '#meta_title_' + lang_id ).val();
var seo_link = $( '#seo_link_' + lang_id ).val();
var description = $( '#meta_description_' + lang_id ).val();
$.ajax(
{
type: 'POST',
cache: false,
url: '/admin/ajax.php',
data:
{
a: 'google_url_preview',
title: title,
lang_id: lang_id,
page_id: $('#id').val(),
pid: pid,
seo_link: seo_link,
default_language: default_language
},
success: function (data)
{
$( '#google-preview-' + lang_id + ' .google-url' ).html( '<?= $_SERVER['SERVER_NAME']; ?>/' + data );
}
});
if (typeof meta_title !== "undefined" && meta_title != '')
{
if (meta_title.length < 65)
$('#google-preview-' + lang_id + ' .google-title').html(meta_title);
else if (typeof description !== "undefined")
{
var space = meta_title.lastIndexOf(" ", 65);
$('#google-preview-' + lang_id + ' .google-title').html(meta_title.substring(0, space).concat('...'));
}
} else if (typeof title !== "undefined" && title != '')
{
title = title + ' ● <?= $this->settings['firm_name']; ?>';
if (title.length < 65)
$('#google-preview-' + lang_id + ' .google-title').html(title);
else if (typeof description !== "undefined")
{
var space = title.lastIndexOf(" ", 65);
$('#google-preview-' + lang_id + ' .google-title').html(title.substring(0, space).concat('...'));
}
}
if (typeof description !== "undefined" && description.length < 153)
$('#google-preview-' + lang_id + ' .google-description').html(description);
else if (typeof description !== "undefined")
{
var space = description.lastIndexOf(" ", 153);
$('#google-preview-' + lang_id + ' .google-description').html(description.substring(0, space).concat('...'));
}
}
function pages_url_browser(lang_id)
{
link_lang = lang_id;
$.magnificPopup.open({
removalDelay: 500,
items: {
src: '/admin/pages/pages_url_browser/modal=true'
},
type: 'ajax',
overflowY: 'scroll'
});
}
</script>
<?
global $db;
ob_start();
?>
<div id="settings-tabs">
<ul class="resp-tabs-list settings-tabs">
<li><i class="fa fa-file"></i>Treść</li>
<li><i class="fa fa-wrench"></i>Ustawienia</li>
<li><i class="fa fa-globe"></i>SEO</li>
</ul>
<div class="resp-tabs-container settings-tabs">
<div>
<div id="languages-main">
<ul class="resp-tabs-list languages-main">
<? if (is_array($this->languages)): foreach ($this->languages as $lg): ?>
<? if ($lg['status']): ?>
<li><? if ($lg['id'] == \front\factory\Languages::default_language()) echo '<i class="fa fa-star fa-lg text-system" title="Język domyślny"></i> '; ?><?= $lg['name']; ?></a></li>
<? endif; ?>
<? endforeach;
endif; ?>
</ul>
<div class="resp-tabs-container languages-main">
<? if (is_array($this->languages)): foreach ($this->languages as $lg): ?>
<? if ($lg['status']): ?>
<div>
<?=
\Html::input(
array(
'label' => 'Nazwa strony',
'name' => 'title',
'id' => 'title_' . $lg['id'],
'value' => $this->page['languages'][$lg['id']]['title'],
'js_key' => 'google_preview( "' . $lg['id'] . '", "' . \S::get('pid') . '" ); return false;'
)
);
?>
</div>
<? endif; ?>
<? endforeach;
endif; ?>
</div>
<div class="clear"></div>
</div>
</div>
<div style="padding: 15px;">
<?
if (is_array($this->menus)): foreach ($this->menus as $menu):
$menus[$menu['id']] = $menu['name'];
endforeach;
endif;
?>
<?=
\Html::select(
array(
'label' => 'Menu',
'name' => 'menu_id',
'values' => $menus,
'value' => $this->page['id'] ? $this->page['menu_id'] : $this->menu_id
)
);
?>
<?=
\Html::select(
array(
'label' => 'Typ strony',
'name' => 'page_type',
'id' => 'page_type',
'values' => \admin\factory\Pages::$_page_types,
'value' => $this->page['page_type']
)
);
?>
<div id="link-content" class="hide">
<div id="languages-links">
<ul class="resp-tabs-list languages-links">
<? if (is_array($this->languages)): foreach ($this->languages as $lg): ?>
<? if ($lg['status']): ?>
<li><? if ($lg['id'] == \front\factory\Languages::default_language()) echo '<i class="fa fa-star fa-lg text-system" title="Język domyślny"></i> '; ?><?= $lg['name']; ?></a></li>
<? endif; ?>
<? endforeach;
endif; ?>
</ul>
<div class="resp-tabs-container languages-links">
<? if (is_array($this->languages)): foreach ($this->languages as $lg): ?>
<? if ($lg['status']): ?>
<div>
<?=
\Html::input_icon(
array(
'label' => 'Link',
'name' => 'link',
'id' => 'link_' . $lg['id'],
'value' => $this->page['languages'][$lg['id']]['link'],
'icon_class' => 'fa fa-link',
'icon_js' => 'pages_url_browser( "' . $lg['id'] . '");'
)
);
?>
</div>
<? endif; ?>
<? endforeach;
endif; ?>
</div>
<div class="clear"></div>
</div>
</div>
<?=
\Html::select(
array(
'label' => 'Sortowanie artykułów',
'name' => 'sort_type',
'id' => 'sort_type',
'values' => \admin\factory\Pages::$_sort_types,
'value' => $this->page['sort_type']
)
);
?>
<?
$layouts[''] = '---- szablon ----';
if (is_array($this->layouts)): foreach ($this->layouts as $layout):
$layouts[$layout['id']] = $layout['name'];
endforeach;
endif;
?>
<?=
\Html::select(
array(
'label' => 'Szablon',
'name' => 'layout_id',
'id' => 'layout_id',
'values' => $layouts,
'value' => $this->page['layout_id']
)
);
?>
<?=
\Html::input(
array(
'label' => 'Liczba artykułów na stronę',
'name' => 'articles_limit',
'id' => 'articles_limit',
'value' => $this->page['articles_limit'] ? $this->page['articles_limit'] : 2
)
);
?>
<?=
\Html::input_switch(
array(
'label' => 'Pokaż tytuł',
'name' => 'show_title',
'checked' => $this->page['show_title'] == 1 or ! $this->page['id'] ? true : false
)
);
?>
<?= \Html::input_switch(
array(
'label' => 'Aktywna',
'name' => 'status',
'checked' => $this->page['status'] == 1 or ! $this->page['id'] ? true : false
)
);
?>
<?= Html::input_switch( [
'label' => 'Strona startowa',
'name' => 'start',
'checked' => $this->page['start'] == 1 ? true : false
]
);
?>
<?= Html::input_switch( [
'label' => 'Cache (24h)',
'name' => 'cache',
'checked' => $this -> page['cache'] == 1 ? true : false
]
);
?>
</div>
<div>
<div id="languages-seo">
<ul class="resp-tabs-list languages-seo">
<? if (is_array($this->languages)): foreach ($this->languages as $lg): ?>
<? if ($lg['status']): ?>
<li><? if ($lg['id'] == \front\factory\Languages::default_language()) echo '<i class="fa fa-star fa-lg text-system" title="Język domyślny"></i> '; ?><?= $lg['name']; ?></a></li>
<? endif; ?>
<? endforeach;
endif; ?>
</ul>
<div class="resp-tabs-container languages-seo">
<? if (is_array($this->languages)): foreach ($this->languages as $lg): ?>
<? if ($lg['status']): ?>
<div>
<?=
\Html::input_icon(
array(
'label' => 'Link SEO',
'name' => 'seo_link',
'id' => 'seo_link_' . $lg['id'],
'value' => $this->page['languages'][$lg['id']]['seo_link'],
'icon_content' => 'generuj',
'icon_js' => 'generate_seo_links( "' . $lg['id'] . '", $( "#title_' . $lg['id'] . '" ).val(), ' . (int) $this->page['id'] . ', ' . \S::get('pid') . ' );',
'js_key' => 'google_preview( "' . $lg['id'] . '", "' . \S::get('pid') . '" ); return false;'
)
);
?>
<?=
\Html::input(
array(
'label' => 'Tytuł strony (h1)',
'name' => 'site_title',
'id' => 'site_title_' . $lg['id'],
'value' => $this->page['languages'][$lg['id']]['site_title']
)
);
?>
<?=
\Html::input(
array(
'label' => 'Meta title',
'name' => 'meta_title',
'id' => 'meta_title_' . $lg['id'],
'value' => $this->page['languages'][$lg['id']]['meta_title'],
'js_key' => 'google_preview( "' . $lg['id'] . '" ); return false;'
)
);
?>
<?=
\Html::textarea(
array(
'label' => 'Meta description',
'name' => 'meta_description',
'id' => 'meta_description_' . $lg['id'],
'value' => $this->page['languages'][$lg['id']]['meta_description'],
'js_key' => 'google_preview( "' . $lg['id'] . '" ); return false;'
)
);
?>
<?=
\Html::textarea(
array(
'label' => 'Meta keywords',
'name' => 'meta_keywords',
'id' => 'meta_keywords_' . $lg['id'],
'value' => $this->page['languages'][$lg['id']]['meta_keywords']
)
);
?>
<div class="form-group ">
<label class="col-lg-3 control-label">Podgląd google:</label>
<div class="col-lg-9">
<div id="google-preview-<?= $lg['id']; ?>">
<div class="google-title"></div>
<div class="google-url"></div>
<div class="google-description"></div>
</div>
</div>
</div>
<?=
\Html::select(
array(
'label' => 'Blokuj indeksację',
'name' => "noindex",
'id' => 'noindex_' . $lg['id'],
'values' => array(
0 => 'nie', 1 => 'tak'
),
'value' => $this->page['languages'][$lg['id']]['noindex'] == 1 ? 1 : 0
)
);
?>
<?= \Html::select(
array(
'label' => 'Blokuj bezpośredni dostęp',
'name' => "block_direct_access",
'id' => 'block_direct_access_' . $lg['id'],
'values' => array(
0 => 'nie', 1 => 'tak'
),
'value' => $this -> page['languages'][ $lg['id'] ]['block_direct_access'] == 1 ? 1 : 0
)
);?>
<?= \Html::input(
array(
'label' => 'Rel canonical',
'name' => 'canonical',
'id' => 'canonical_' . $lg['id'],
'value' => $this->page['languages'][$lg['id']]['canonical']
) );?>
</div>
<? endif; ?>
<? endforeach;
endif; ?>
</div>
<div class="clear"></div>
</div>
</div>
</div>
<div class="clear"></div>
<?
$out = ob_get_clean();
$grid = new \gridEdit;
$grid->id = 'page-edit';
$grid->gdb_opt = $gdb;
$grid->include_plugins = true;
$grid->title = 'Edycja strony';
$grid->fields = [
[
'db' => 'id',
'type' => 'hidden',
'value' => $this->page['id']
],
[
'db' => 'parent_id',
'type' => 'hidden',
'value' => $this->page['id'] ? $this->page['parent_id'] : $this->parent_id
]
];
$grid->actions = [
'save' => ['url' => '/admin/pages/page_save/', 'back_url' => '/admin/pages/view_list/'],
'cancel' => ['url' => '/admin/pages/view_list/']
];
$grid->external_code = $out;
$grid->persist_edit = true;
$grid->id_param = 'id';
echo $grid->draw();
?>

View File

@@ -0,0 +1,156 @@
<?
global $gdb;
ob_start();
if ( is_array( $this -> menus ) ) foreach ( $this -> menus as $menu )
{
?>
<div class="menu_sortable">
<ol class="sortable" id="sortable_<?= $menu['id'];?>" menu-id="<?= $menu['id'];?>">
<li id="list_<?= $menu['id'];?>" class="menu_<?= $menu['id'];?>" menu="<?= $menu['id'];?>">
<div class="context_0 content content_menu">
<span class="disclose"><span></span></span>
<? if ( !$menu['status'] ) echo '<i class="fa fa-ban fa-lg text-danger" title="Menu nieaktywne"></i>';?>
Menu: <b><?= $menu['name'];?></b>
</div>
<?= \admin\view\Pages::subpages_browse_list( \admin\factory\Pages::menu_pages( $menu['id'] ) );?>
</li>
</ol>
</div>
<?
}
$out = ob_get_clean();
$grid = new \gridEdit;
$grid -> id = 'pages-list';
$grid -> gdb_opt = $gdb;
$grid -> include_plugins = true;
$grid -> title = 'Lista stron';
$grid -> default_buttons = false;
$grid -> external_code = $out;
echo $grid -> draw();
?>
<style type="text/css">
<? if ( $this -> modal ):?>
.menu-left, .navbar {
display: none;
}
.site-content {
width: 100%;
margin-left: 0;
}
<? endif;?>
</style>
<script type="text/javascript" src="/libraries/jquery-nested-sortable/jquery.mjs.nestedSortable.js"></script>
<script type="text/javascript">
var menu_id = 0;
function getUrlParam(paramName)
{
var reParam = new RegExp('(?:[\?&]|&amp;)' + paramName + '=([^&]+)', 'i');
var match = window.location.search.match(reParam);
return (match && match.length > 1) ? match[1] : '';
}
$( document ).ready( function()
{
<? if ( !$this -> modal ):?>
$( '#sidebar_left, .navbar-fixed-top' ).hide();
<? endif;?>
var funcNum = getUrlParam('CKEditorFuncNum');
$( 'body' ).on( 'click', '.button', function()
{
if ( funcNum )
{
window.opener.CKEDITOR.tools.callFunction(funcNum, $( this ).attr( 'url' ) );
window.close();
}
});
$( 'ol.sortable' ).nestedSortable(
{
forcePlaceholderSize: true,
handle: 'div',
helper: 'clone',
items: 'li',
opacity: .9,
placeholder: 'placeholder',
revert: 250,
tabSize: 45,
tolerance: 'pointer',
toleranceElement: '> div',
maxLevels: 3,
isTree: true,
expandOnHover: 700,
stop: function() {
save_pages_order();
}
});
$( '.disclose' ).on( 'click', function()
{
$( this ).closest( 'li' ).toggleClass( 'sort-collapsed' ).toggleClass( 'sort-expanded' );
});
$( ".sortable *" ).mousedown( function(e)
{
menu_id = $( this ).parents( 'ol.sortable' ).attr( 'menu-id' );
});
$( '.disclose' ).mousedown( function(e)
{
if ( e.which === 1 ) {
if ( $( this ).parent( 'div' ).hasClass( 'content_menu' ) )
{
var menu_id = $( this ).parent( 'div' ).parent( 'li' ).attr( 'menu' );
$.ajax(
{
type: 'POST',
cache: false,
url: '/admin/ajax.php',
data: {
a: 'cookie_menus',
menu_id: menu_id
}
});
}
else
{
var page_id = $( this ).parent( 'div' ).parent( 'li' ).attr( 'id' );
$.ajax(
{
type: 'POST',
cache: false,
url: '/admin/ajax.php',
data: {
a: 'cookie_pages',
page_id: page_id
}
});
}
}
});
<?php
$array = unserialize( $_COOKIE[ 'cookie_pages' ] );
if ( is_array( $array ) ): foreach ( $array as $key => $val ):
if ( $val ):
?>$( '.<?= $key;?>' ).children( 'div' ).children( 'span.disclose' ).click();<?
endif;
endforeach; endif;
$array = unserialize( $_COOKIE[ 'cookie_menus' ] );
if ( is_array( $array ) ): foreach ( $array as $key => $val ):
if ( $val ):
?>$( '.menu_<?= $key;?>' ).children( 'div' ).children( 'span.disclose' ).click();<?
endif;
endforeach; endif;
?>
});
</script>

View File

@@ -0,0 +1,204 @@
<?
global $gdb;
ob_start();
if ( is_array( $this -> menus ) ) foreach ( $this -> menus as $menu )
{
?>
<div class="menu_sortable">
<ol class="sortable" id="sortable_<?= $menu['id'];?>" menu-id="<?= $menu['id'];?>">
<li id="list_<?= $menu['id'];?>" class="menu_<?= $menu['id'];?>" menu="<?= $menu['id'];?>">
<div class="context_0 content content_menu">
<span class="disclose"><span></span></span>
<? if ( !$menu['status'] ) echo '<i class="fa fa-ban fa-lg text-danger" title="Menu nieaktywne"></i>';?>
Menu: <b><?= $menu['name'];?></b>
<div class="btn-group ml20 pull-right">
<a href="/admin/pages/menu_edit/id=<?= $menu['id'];?>" title="Edytuj menu" class="btn btn-sm btn-system">
<i class="fa fa-file-text"></i> <span class="hidden-xs">Edytuj menu</span>
</a>
<a href="#" title="Usuń menu" class="btn btn-sm btn-danger menu-delete" menu-id="<?= $menu['id'];?>">
<i class="fa fa-trash"></i> <span class="hidden-xs">Usuń menu</span>
</a>
<a href="/admin/pages/page_edit/pid=0&menu_id=<?= $menu['id'];?>" title="Dodaj stronę" class="btn btn-sm btn-success">
<i class="fa fa-plus-circle"></i> <span class="hidden-xs">Dodaj stronę</span>
</a>
</div>
</div>
<?= \admin\view\Pages::subpages_list( \admin\factory\Pages::menu_pages( $menu['id'] ) );?>
</li>
</ol>
</div>
<?
}
$out = ob_get_clean();
$grid = new \gridEdit;
$grid -> id = 'pages-list';
$grid -> gdb_opt = $gdb;
$grid -> include_plugins = true;
$grid -> title = 'Lista stron';
$grid -> default_buttons = false;
$grid -> buttons = [
[
'label' => 'Dodaj menu',
'url' => '/admin/pages/menu_edit/',
'icon' => 'fa-plus-circle',
'class' => 'btn-success'
]
];
$grid -> external_code = $out;
echo $grid -> draw();
?>
<script type="text/javascript" src="/libraries/jquery-nested-sortable/jquery.mjs.nestedSortable.js"></script>
<script type="text/javascript">
var menu_id = 0;
$( document ).ready( function()
{
$( 'body' ).on( 'click', '.menu-delete', function()
{
var menu_id = $( this ).attr( 'menu-id' );
$.prompt( "Na pewno chcesz usunąć wybrane menu?",
{
title: "Potwierdź?",
buttons: { "Tak": true, "Nie": false },
submit: function( e, v, m, f )
{
if ( v === true )
document.location.href = '/admin/pages/menu_delete/id=' + menu_id;
}
});
});
$( 'body' ).on( 'click', '.page-delete', function()
{
var page_id = $( this ).attr( 'page-id' );
$.prompt( "Na pewno chcesz usunąć wybraną stronę?",
{
title: "Potwierdź?",
buttons: { "Tak": true, "Nie": false },
submit: function( e, v, m, f )
{
if ( v === true )
document.location.href = '/admin/pages/page_delete/id=' + page_id;
}
});
});
$( 'ol.sortable' ).nestedSortable(
{
forcePlaceholderSize: true,
handle: 'div',
helper: 'clone',
items: 'li',
opacity: .9,
placeholder: 'placeholder',
revert: 250,
tabSize: 45,
tolerance: 'pointer',
toleranceElement: '> div',
maxLevels: 4,
isTree: true,
expandOnHover: 700,
stop: function() {
save_pages_order();
}
});
$( '.disclose' ).on( 'click', function()
{
$( this ).closest( 'li' ).toggleClass( 'sort-collapsed' ).toggleClass( 'sort-expanded' );
});
$( ".sortable *" ).mousedown( function(e)
{
menu_id = $( this ).parents( 'ol.sortable' ).attr( 'menu-id' );
});
$( '.disclose' ).mousedown( function(e)
{
if ( e.which === 1 ) {
if ( $( this ).parent( 'div' ).hasClass( 'content_menu' ) )
{
var menu_id = $( this ).parent( 'div' ).parent( 'li' ).attr( 'menu' );
$.ajax(
{
type: 'POST',
cache: false,
url: '/admin/ajax.php',
data: {
a: 'cookie_menus',
menu_id: menu_id
}
});
}
else
{
var page_id = $( this ).parent( 'div' ).parent( 'li' ).attr( 'id' );
$.ajax(
{
type: 'POST',
cache: false,
url: '/admin/ajax.php',
data: {
a: 'cookie_pages',
page_id: page_id
}
});
}
}
});
<?php
$array = unserialize( $_COOKIE[ 'cookie_pages' ] );
if ( is_array( $array ) ): foreach ( $array as $key => $val ):
if ( $val ):
?>$( '.<?= $key;?>' ).children( 'div' ).children( 'span.disclose' ).click();<?
endif;
endforeach; endif;
$array = unserialize( $_COOKIE[ 'cookie_menus' ] );
if ( is_array( $array ) ): foreach ( $array as $key => $val ):
if ( $val ):
?>$( '.menu_<?= $key;?>' ).children( 'div' ).children( 'span.disclose' ).click();<?
endif;
endforeach; endif;
?>
});
function save_pages_order( )
{
pages = $( '#sortable_' + menu_id ).nestedSortable( 'toArray', { startDepthCount: 0 } );
$.ajax(
{
type: 'POST',
cache: false,
url: '/admin/ajax.php',
data:
{
a: 'save_pages_order',
menu_id: menu_id,
pages: pages
},
beforeSend: function()
{
$.prompt( 'Trwa zapisywanie...', { title: 'Proszę czekać' } );
},
success: function( data )
{
$( '.jqibox' ).remove();
response = jQuery.parseJSON( data );
if ( response.status === 'error' )
create_error( response.msg );
}
});
}
</script>

View File

@@ -0,0 +1,72 @@
<? if (is_array($this->pages)): ?>
<?
$settings = \front\factory\Settings::settings_details();
?>
<ol>
<? foreach ($this->pages as $page): ?>
<li id="list_<?= $page['id']; ?>" idk="<?= $page['id']; ?>" class="list_<?= $page['id']; ?>" menu="<?= $page['menu_id']; ?>">
<div class="content">
<span class="disclose"><span></span></span>
<?
if (!$page['status'])
echo '<i class="fa fa-ban fa-lg text-danger" title="Strona nieaktywna"></i>';
if ($page['start'])
echo '<i class="fa fa-star fa-lg text-system" title="Strona startowa"></i>';
echo mb_substr( $page['title'], 0, 50, 'UTF-8' );
if ( strlen( $page['title'] ) > 50 )
echo '...';
if (is_array($page['languages'])):
echo '<div class="btn-group flags" style="display: inline-block;">';
foreach ($page['languages'] as $lg)
echo '<img src="/admin/css/lang-' . $lg['lang_id'] . '.jpg" />';
echo '</div>';
endif;
$default_language = \front\factory\Languages::default_language();
if (is_array($page['languages'])):
foreach ($page['languages'] as $lg):
echo '<div class="btn-group ml20 pull-right">';
echo '<a href="#" title="Wybierz stronę" class="btn btn-sm btn-system button url-select" url="';
if ($settings['links_structure']) {
if ($lg['seo_link']) {
$seo = '/'.\admin\factory\Pages::google_url_preview($page['id'], $lg['title'], $lg['lang_id'], 0, 0, $lg['seo_link']);
echo $seo;
}
else{
$seo = '/'. \admin\factory\Pages::google_url_preview($page['id'], $lg['title'], $lg['lang_id'], 0, 0, 0);
echo $seo;
}
}
else
{
if ($lg['seo_link']) {
if ($default_language != $lg['lang_id'])
echo '/' . $lg['lang_id'];
echo '/' . $lg['seo_link'];
}
else {
if ($default_language != $lg['lang_id'])
echo '/' . $lg['lang_id'];
echo '/s-' . $page['id'] . '-' . \S::seo($lg['title']);
}
}
echo '">';
echo '<i class="fa fa-check"></i> <span class="hidden-xs">' . strtoupper($lg['lang_id']) . '</span>';
echo '</a>';
echo '</div>';
endforeach;
endif;
?>
</div>
<?
if (is_array($page['subpages']))
echo \admin\view\Pages::subpages_browse_list($page['subpages'], $page['id'], $this->step + 1);
?>
</li>
<? endforeach; ?>
</ol>
<? endif; ?>

View File

@@ -0,0 +1,54 @@
<? if ( is_array( $this -> pages ) ):?>
<ol>
<? foreach ( $this -> pages as $page ):?>
<li id="list_<?= $page['id'];?>" idk="<?= $page['id'];?>" class="list_<?= $page['id'];?>" menu="<?= $page['menu_id'];?>">
<div class="content">
<span class="disclose"><span></span></span>
<? if ( !$page['status'] ) echo '<i class="fa fa-ban fa-lg text-danger" title="Strona nieaktywna"></i>';?>
<? if ( $page['start'] ) echo '<i class="fa fa-star fa-lg text-system" title="Strona startowa"></i>';?>
<?= mb_substr( $page['title'], 0, 75, 'UTF-8' );?><? if ( mb_strlen( $page['title'], 'utf-8' ) > 75 ) echo '...';?>
<?
if ( is_array( $page['languages'] ) ):
echo '<div class="btn-group flags" style="display: inline-block;">';
foreach ( $page['languages'] as $lg )
echo '<img src="/admin/css/lang-' . $lg['lang_id'] . '.jpg" />';
echo '</div>';
endif;
?>
<? if ( $this -> step < 3 ):?>
<div class="btn-group ml20 pull-right">
<a href="/admin/pages/page_edit/id=<?= $page['id'];?>&menu_id=<?= $page['menu_id'];?>" title="Edytuj stronę" class="btn btn-sm btn-system">
<i class="fa fa-file-text"></i> <span class="hidden-xs">Edytuj stronę</span>
</a>
<a href="#" title="Usuń stronę" class="btn btn-sm btn-danger page-delete" page-id="<?= $page['id'];?>">
<i class="fa fa-trash"></i> <span class="hidden-xs">Usuń stronę</span>
</a>
<a href="/admin/pages/page_articles/id=<?= $page['id'];?>" title="Lista artykułów" class="btn btn-sm btn-info" page-id="<?= $page['id'];?>">
<i class="fa fa-bars"></i> <span class="hidden-xs">Lista artykułów</span>
</a>
<a href="/admin/pages/page_edit/pid=<?= $page['id'];?>&menu_id=<?= $page['menu_id'];?>" title="Dodaj podstronę" class="btn btn-sm btn-success">
<i class="fa fa-plus-circle"></i> <span class="hidden-xs">Dodaj podstronę</span>
</a>
</div>
<? else:?>
<div class="btn-group ml20 pull-right">
<a href="/admin/pages/page_edit/id=<?= $page['id'];?>&menu_id=<?= $page['menu_id'];?>" title="Edytuj stronę" class="btn btn-sm btn-system">
<i class="fa fa-file-text"></i> <span class="hidden-xs">Edytuj stronę</span>
</a>
<a href="#" title="Usuń stronę" class="btn btn-sm btn-danger page-delete" page-id="<?= $page['id'];?>">
<i class="fa fa-trash"></i> <span class="hidden-xs">Usuń stronę</span>
</a>
<a href="/admin/pages/page_articles/id=<?= $page['id'];?>" title="Lista artykułów" class="btn btn-sm btn-info" page-id="<?= $page['id'];?>">
<i class="fa fa-bars"></i> <span class="hidden-xs">Lista artykułów</span>
</a>
</div>
<? endif;?>
</div>
<?
if ( is_array( $page['subpages'] ) )
echo \admin\view\Pages::subpages_list( $page['subpages'], $page['id'], $this -> step + 1 );
?>
</li>
<? endforeach;?>
</ol>
<? endif;?>