<php>function _get_system_widget($name){</php> <switch name="name"> <case value="MainContributors"> <div class="panel panel-default"> <div class="panel-heading"> <h3 class="panel-title">技术支持</h3> </div> <div class="panel-body home-info"> <ul class="list-inline"> <li>银河百荣科技</li> </ul> </div> </div> </case> </switch> <php>}</php> <include file="public@header"/> <style> .home-info li em { float: left; width: 120px; font-style: normal; font-weight: bold; } .home-info ul { padding: 0; margin: 0; } .panel { margin-bottom: 0; } .grid-sizer { width: 10%; } .grid-item { margin-bottom: 5px; padding: 5px; } .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { padding-left: 5px; padding-right: 5px; float: none; } </style> <hook name="admin_before_head_end"/> </head> <body> <div class="wrap"> <if condition="!extension_loaded('fileinfo')"> <div class="grid-item col-md-12"> <div class="alert alert-danger alert-dismissible fade in" role="alert" style="margin-bottom: 0;"> <button type="button" class="close" data-dismiss="alert" aria-label="Close"> <span aria-hidden="true">×</span> </button> <strong>提示!</strong> php_fileinfo扩展没有开启,无法正常上传文件! </div> </div> </if> <div class="home-grid"> <!-- width of .grid-sizer used for columnWidth --> <div class="grid-sizer"></div> <foreach name="dashboard_widgets" item="vo"> <if condition="$vo.is_system"> <div class="grid-item col-md-12" data-system="1" data-widget="{$vo.name}"> <div class="dashboard-box">{:_get_system_widget($vo.name)}</div> </div> <else/> <present name="dashboard_widget_plugins[$vo['name']]"> <div class="grid-item col-md-{$dashboard_widget_plugins[$vo['name']]['width']}" data-system="0" data-widget="{$vo.name}"> <div class="dashboard-box">{$dashboard_widget_plugins[$vo.name]['view']}</div> </div> </present> </if> </foreach> </div> </div> <script src="__STATIC__/js/admin.js"></script> <php> $lang_set=defined('LANG_SET')?LANG_SET:''; $BRONET_VERSION=defined('BRONET_VERSION')?BRONET_VERSION:''; </php> <script> Wind.css('dragula'); Wind.use('masonry', 'imagesloaded', 'dragula', function () { var $homeGrid = $('.home-grid').masonry({ // set itemSelector so .grid-sizer is not used in layout itemSelector: '.grid-item', // use element for option columnWidth: '.grid-sizer', percentPosition: true, horizontalOrder: false, transitionDuration: 0 }); $homeGrid.masonry('on', 'layoutComplete', function (event, laidOutItems) { }); $homeGrid.masonry(); var containers = []; $('.home-grid .grid-item').each(function () { containers.push(this); }); dragula(containers, { isContainer: function (el) { return false; // only elements in drake.containers will be taken into account }, moves: function (el, source, handle, sibling) { return true; // elements are always draggable by default }, accepts: function (el, target, source, sibling) { return true; // elements can be dropped in any of the `containers` by default }, invalid: function (el, handle) { return false; // don't prevent any drags from initiating by default }, direction: 'vertical', // Y axis is considered when determining where an element would be dropped copy: false, // elements are moved by default, not copied copySortSource: false, // elements in copy-source containers can be reordered revertOnSpill: false, // spilling will put the element back where it was dragged from, if this is true removeOnSpill: false, // spilling will `.remove` the element, if this is true mirrorContainer: document.body, // set the element that gets mirror elements appended ignoreInputTextSelection: true // allows users to select input text, see details below }).on('drop', function (el, target, source, sibling) { var $target = $(target); var targetClasses = $target.attr('class'); var targetDataWidget = $target.data('widget'); var targetDataSystem = $target.data('system'); var $source = $(source); var sourceClasses = $source.attr('class'); var sourceDataWidget = $source.data('widget'); var sourceDataSystem = $source.data('system'); $(source).append($(target).find('.dashboard-box').not('.gu-transit')); $(target).append(el); $target.attr('class', sourceClasses); $target.data('widget', sourceDataWidget); $target.data('system', sourceDataSystem); $source.attr('class', targetClasses); $source.data('widget', targetDataWidget); $source.data('system', targetDataSystem); $homeGrid.masonry(); _widgetSort(); }).on('shadow', function (el, container, source) { $homeGrid.masonry(); }); }); function _widgetSort() { var widgets = []; $('.home-grid .grid-item').each(function () { var $this = $(this); widgets.push({ name: $this.data('widget'), is_system: $this.data('system') }); }); $.ajax({ url: "{:url('main/dashboardWidget')}", type: 'post', dataType: 'json', data: {widgets: widgets}, success: function (data) { }, error: function () { }, complete: function () { } }); } </script> <hook name="admin_before_body_end"/> </body> </html>