index.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. /**
  2. @Name:layuiAdmin iframe版主入口
  3. @Author:贤心
  4. @Site:http://www.layui.com/admin/
  5. @License:LPPL
  6. */
  7. layui.extend({
  8. setter: 'config' //配置模块
  9. , admin: 'lib/admin' //核心模块
  10. , view: 'lib/view' //视图渲染模块
  11. }).define(['setter', 'admin'], function (exports) {
  12. var setter = layui.setter
  13. , element = layui.element
  14. , admin = layui.admin
  15. , tabsPage = admin.tabsPage
  16. , view = layui.view
  17. //打开标签页
  18. , openTabsPage = function (url, text) {
  19. //遍历页签选项卡
  20. var matchTo
  21. , tabs = $('#LAY_app_tabsheader>li')
  22. , path = url.replace(/(^http(s*):)|(\?[\s\S]*$)/g, '');
  23. tabs.each(function (index) {
  24. var li = $(this)
  25. , layid = li.attr('lay-id');
  26. if (layid === url) {
  27. matchTo = true;
  28. tabsPage.index = index;
  29. }
  30. });
  31. text = text || '新标签页';
  32. if (setter.pageTabs) {
  33. //如果未在选项卡中匹配到,则追加选项卡
  34. if (!matchTo) {
  35. $(APP_BODY).append([
  36. '<div class="layadmin-tabsbody-item layui-show">'
  37. , '<iframe src="' + url + '" frameborder="0" class="layadmin-iframe"></iframe>'
  38. , '</div>'
  39. ].join(''));
  40. tabsPage.index = tabs.length;
  41. element.tabAdd(FILTER_TAB_TBAS, {
  42. title: '<span>' + text + '</span>'
  43. , id: url
  44. , attr: path
  45. });
  46. }
  47. } else {
  48. var iframe = admin.tabsBody(admin.tabsPage.index).find('.layadmin-iframe');
  49. iframe[0].contentWindow.location.href = url;
  50. }
  51. //定位当前tabs
  52. element.tabChange(FILTER_TAB_TBAS, url);
  53. admin.tabsBodyChange(tabsPage.index, {
  54. url: url
  55. , text: text
  56. });
  57. }
  58. //权限处理
  59. , removeNoPermButtons = function () {
  60. var permissions = layui.data(layui.setter.tableName)['permissions'];
  61. $('.layui-btn').each(function () {
  62. var perm = $(this).data("permission");
  63. var is_has = judgePermissions(permissions, perm);
  64. if (!is_has) {
  65. $(this).remove();
  66. }
  67. });
  68. $('.LAY-btns .layui-nav').each(function () {
  69. var perm = $(this).data("permission");
  70. var is_has = judgePermissions(permissions, perm);
  71. if (!is_has) {
  72. $(this).remove();
  73. }
  74. });
  75. }
  76. , APP_BODY = '#LAY_app_body', FILTER_TAB_TBAS = 'layadmin-layout-tabs'
  77. , $ = layui.$, $win = $(window);
  78. function judgePermissions(permissions, perm) {
  79. if (!perm) {
  80. return true;
  81. }
  82. var perms = perm.split('|');
  83. var is_has = false;
  84. for (var i in perms) {
  85. if (permissions.indexOf(perms[i]) != -1) {
  86. is_has = true;
  87. break;
  88. }
  89. }
  90. return is_has;
  91. }
  92. //初始
  93. if (admin.screen() < 2) admin.sideFlexible();
  94. //将模块根路径设置为 controller 目录
  95. layui.config({
  96. base: setter.base + 'modules/'
  97. });
  98. //扩展 lib 目录下的其它模块
  99. layui.each(setter.extend, function(index, item){
  100. var mods = {};
  101. mods[item] = '{/}' + setter.base + 'lib/extend/' + item;
  102. layui.extend(mods);
  103. });
  104. removeNoPermButtons();
  105. view().autoRender();
  106. //加载公共模块
  107. layui.use('common');
  108. //对外输出
  109. exports('index', {
  110. openTabsPage: openTabsPage
  111. , removeNoPermButtons: removeNoPermButtons
  112. });
  113. });