yii-diandi/adminlte

yii后台前端框架

安装: 58

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

语言:JavaScript

类型:yii2-extension

dev-master 2020-05-24 04:08 UTC

This package is auto-updated.

Last update: 2024-09-24 14:01:08 UTC


README

带iframe的AdminLTE -- 基于 AdminLTE 框架。它集成了iframe的tab页面,是适合中国行政系统的后台主题UI框架。

(基于AdminLTE框架,并且集成了iframe的tab页面,是一款适合中国国情的后台主题UI框架)

在github上预览: https://weituotian.github.io/AdminLTE-With-Iframe/pages/index_iframe.html

在oschina上预览: http://weituotian.oschina.io/adminlte-with-iframe/pages/index_iframe.html

preview image1

preview image2

目录

1. branch(分支)

更新分支为master

2. reference(参考)

super ui

(iframe功能的js和页面css都是参考superui得出来的)

3. Installation(安装)

修改可以使用grunt构建工具

  • 安装nodejs
  • 在项目根目录下命令行执行
  • npm install grunt-cli -g
  • npm install

4. 目录结构

  • build/js/iframe 存放所有关于iframe的源代码,强烈建议修改这里的代码
  • dist/js/app_iframe.js 使用grunt构建工具生成的js,属于打包后的js

5. Documentation(文档)

可能需要通过阅读源码来 自定义 系统! (请阅读源码进行修改)

AdminLTE官方文档

5-1. 整合到您的项目

  1. 负责将 pluginsdist 目录复制到您的项目中
  2. index_iframe.html 复制到您的项目中,
    1. 修改引用的js路径,css路径,比如Java Web要用到${ContextPath}之类的。
    2. 也可修改其中的创建菜单的js
  3. 复制子iframe的页面模板 welcome_iframe.html

5-2. iframe框架

介绍一些集成了iframe后新增的功能,和修改方法。 请确认执行完上面文档的安装部分。 可随时开启issue.

5-2-1. 选项卡右键菜单,双击刷新

  • 修改右键菜单的文字,请参阅 bootstrap-tab.js ,内有context.attach初始化json菜单,并且可以参考其获取特定tab当前url的代码
  • 刷新选项卡刷新当前tab页,bootstrap-tab.js中的$tabs.on("dblclick",绑定了双击事件。可注释取消这个功能

5-2-2. 一些配置

index_iframe.html 中:

//设置根目录,
//比如本演示中的地址是http://weituotian.oschina.io/adminlte-with-iframe/pages/index_iframe.html#
//上一级就是http://weituotian.oschina.io/adminlte-with-iframe/pages
//当前实际的开发中一般用不到
//比如你的首页用到index_iframe.html这个模版,访问地址为https:///,就不用设置了
//如果你部署在https:///xxx, xxx是你部署的路径,那么就按以下代码设置一下根目录
App.setbasePath("../");

//设置图片路径,相对于根目录
//这个框架带有一些图片(加载进度条等),你可以放置在其它地方
//但要如下设置,
//比如在本项目中,引用的图片放在了根目录下,dist/img/中
App.setGlobalImgPath("dist/img/");

5-2-3. 左侧菜单生成

如下操作,可参考 index_iframe.html, sidebarMenu.js

        var menus = [
            {
                id: "9000",
                text: "header",
                icon: "",
                isHeader: true
            },
            {
                id: "9002",
                text: "Forms",
                icon: "fa fa-edit",
                children: [
                    {
                        id: "90021",
                        text: "advanced",
                        url: "forms/advanced_iframe.html",
                        targetType: "iframe-tab",
                        icon: "fa fa-circle-o"
                    },
                    {
                        id: "90022",
                        text: "general",
                        url: "forms/general_iframe.html",
                        targetType: "iframe-tab",
                        icon: "fa fa-circle-o"
                    },
                    {
                        id: "90024",
                        text: "百度",
                        url: "https://www.baidu.com",
                        targetType: "iframe-tab",
                        icon: "fa fa-circle-o",
                        urlType: 'abosulte'
                    }
                ]
            }
        ];
        $('.sidebar-menu').sidebarMenu({data: menus});

5-2-4. tab的操作

所有的操作都可以在index_iframe.html中实现。index_iframe.html作为一个父页面承载了许多iframe。以下介绍的函数可以主页面使用, 在iframe子页面,也可以通过top.xxx来调用父页面的函数。 以下函数可以打开chrome控制台进行测试操作。

5-2-4-1. 增加新tab

动态增加菜单,你可以从后台读取菜单,用以下的json格式封装。同时还可以自己额外增加菜单

//欢迎页的菜单。
        addTabs({
            id: '10008',
            title: '欢迎页',
            close: false,
            url: 'welcome_iframe.html',
            urlType: "relative"
        });
  • id 代表这个tab的id,重复id将认为同一个tab,如果你从数据库读取菜单,那么可以设置该id为数据库中菜单的id
  • title 选项卡的标题
  • close false表示不可以关闭
  • url 指定一个url地址,绝对或者相对地址
  • urlType 可选relative和absolute ,默认是relative, 相对于当前页面(管理所有tab的页面) 比如https:///index.html,想打开index.html同级目录UI下的页面,就给url:UI/welcome.html;urlType:relative

5-2-4-2. 获得当前激活的tab的id
var pageId = getActivePageId();

最常用吧,一般这个就够了, 在子iframe页面用top.getActivePageId()获取,以下的函数类同。 有了pageId,我们可以调用其它函数操作page。

5-2-4-3. 获得当前激活的tab的id
var pageId = getPageId(element);

element一般是tab栏的a超链接元素,jq对象和普通的dom都可以

5-2-4-4. 根据pageId获得当前选项卡的标题
var title = findTabTitle(pageId);

5-2-4-5. 根据pageId获得当前iframe
var $iframe = findIframeById(pageId);

这个iframe是一个jq对象

5-2-4-6. 根据pageId获得当前panel
var $panel=findTabPanel(pageId)

这个panel是一个div,装有iframe,jq对象

5-2-4-7. 关闭tab
closeTabByPageId(pageId);

pageId是你创建tab时候的id. 只要知道你要操作的pageId,也可以在一个子iframe页面关闭另外一个子iframe页面。

5-2-4-8. 刷新tab
refreshTabById(pageId)

只要知道pageId,就可以刷新任何tab

5-2-4-9. 未完待续

6. Browser Support(浏览器支持)

  • IE 9+
  • Firefox (latest)
  • Chrome (latest)
  • Safari (latest)
  • Opera (latest)

7. License

AdminLTE 是由 Almsaeed Studio 开发的一个开源项目,许可证为 MIT。Almsaeed Studio

保留修改未来版本许可证的权利。

(开源免费)

8. Todo List

  • jQuery Pace 集成
  • 示例:管理 iframe 页面内的标签页。

9. 相关示例项目