slambb 4 лет назад
Родитель
Сommit
d4a80d1583

+ 1 - 1
src/main/resources/application-dev.yml

@@ -24,7 +24,7 @@ spring:
 
 
   redis:
-    host: 121.4.59.141
+    host: 42.192.165.168
     port: 6379
     lettuce: # 这里标明使用lettuce配置
       pool:

+ 104 - 20
src/main/resources/static/js/iframe/iframe.js

@@ -6,6 +6,12 @@
     let tabContainer = '';
     let frameContainer = '';
     let height = '700px';//以这种形式出现的iframe,必须设置高度,不能设置100%
+
+    //已经打开的tab
+    let openTabs = [];
+    let breadcrumb = [];
+    let breadcrumbMap = new Map();
+
     //入口方法
     $.fn[pluginName] = function (options) {
         let self = $(this);
@@ -23,7 +29,7 @@
         this.options = $.extend(true, {}, this.default, options);
         tabContainer = $('#'+this.options.tabContainer);
         frameContainer = $('#'+this.options.frameContainer);
-        console.log(this.options,tabContainer,frameContainer);
+        // console.log(this.options,tabContainer,frameContainer);
         this.init();
     }
     //默认配置
@@ -64,7 +70,7 @@
     BaseIframe.prototype.template = {
         nav_tabs: '<ul class="nav nav-tabs page-header-tab" id="page-tabs"></ul>',
         nav_item: '<li class="nav-item"></li>',
-        nav_a: '<a href="javascript:;" class="nav-link " data-toggle="pill" role="tab" aria-selected="false" data-id="{0}" data-index="{1}" name="{2}" url="{3}">{2}</a>',//这里不能用id,id会追加代码到a标签内
+        nav_a: '<a href="javascript:void(0);" class="nav-link " data-toggle="pill" role="tab" aria-selected="false" data-id="{0}" data-index="{1}" name="{2}" url="{3}">{2}</a>',//这里不能用id,id会追加代码到a标签内
         div_content:
             ' <div class="row clearfix">\n' +
             '    <div class="col-md-12 ">\n' +
@@ -131,24 +137,33 @@
         let data = this.options.data;
         //如果是当前页或者配置了一次性全部加载,否则点击tab页时加载
         for (let i = 0; i < data.length; i++) {
+            // console.log(data[i].url);
+            openTabs.push({id:data[i].id});
+            // 同时处理顶部 breadcrumb,breadcrumb 根据 iframe name 区分
+            breadcrumbMap.set(data[i].id,[]);
             if (this.options.loadAll || this.options.showIndex == i) {
                 if (data[i].url) {
-                    // 添加iframe
-                    let iframe = $(this.template.iframe.format(data[i].id, i, data[i].text, data[i].url, height));
+                    // 添加iframe,name 也是设置id
+                    let iframe = $(this.template.iframe.format(data[i].id, i, data[i].id, data[i].url, height));
                     frameContainer.find("#iframe-content").append(iframe);
                 } else {
                     console.error("id=" + data[i].id + "的iframe页未指定url");
                 }
             }
         }
+        console.log("初始化breadcrumbMap--",breadcrumbMap)
         //存在数据时候,设置active
         if (data.length > 1) {
             frameContainer.find("#iframe-content iframe").eq(this.options.showIndex).css("display", "inline");
-            tabContainer.find('#page-tabs a').eq(this.options.showIndex).addClass('active');
-            console.log(tabContainer.find('#page-tabs a').eq(this.options.showIndex))
+            let dataId = tabContainer.find('#page-tabs a').eq(this.options.showIndex).addClass('active').attr("data-id");
+            // console.log(tabContainer.find('#page-tabs a').eq(this.options.showIndex))
+            breadcrumb = breadcrumbMap.get(dataId);
+            console.log("设置当前的breadcrumb-1=",breadcrumbMap)
         } else {
             frameContainer.find("#iframe-content iframe").eq(0).css("display", "inline");
-            tabContainer.find('#page-tabs a').eq(0).addClass('active');
+            let dataId = tabContainer.find('#page-tabs a').eq(0).addClass('active').attr("data-id");
+            breadcrumb = breadcrumbMap.get(dataId);
+            console.log("设置当前的breadcrumb-2=",breadcrumbMap)
         }
         //绑定事件
         BaseIframe.prototype.eventses();
@@ -157,26 +172,30 @@
      * 添加Iframe
      * */
     BaseIframe.prototype.openIframe = function (context) {
-        let {dataId, dataUrl, menuName, dataIndex} = context;
+        let {dataId, dataUrl, dataIndex} = context;
         // 获取标识数据
         let flag = true;
         if (dataUrl == undefined || $.trim(dataUrl).length == 0) return false;
         frameContainer.find("#iframe-content iframe").each(function () {
-            console.log('id', $(this).data('id'));
-            console.log('url', dataUrl);
+            // console.log('id', $(this).data('id'));
+            // console.log('url', dataUrl);
             if ($(this).data('id') == dataId) {
                 flag = false;
             }
         });
         if (flag) {
-            let iframe = $(this.template.iframe.format(dataId, dataIndex, menuName, dataUrl, height,));
+            //name 也是用id
+            let iframe = $(this.template.iframe.format(dataId, dataIndex, dataId, dataUrl, height));
             frameContainer.find("#iframe-content").append(iframe);
         }
-        BaseIframe.prototype.hidden_a(menuName);
+        //打开页面时候,切换
+        breadcrumb = breadcrumbMap.get(dataId);
+        console.log('切换tab',dataId,breadcrumbMap);
+        BaseIframe.prototype.showBreadcrumb();
+        BaseIframe.prototype.hidden_a(dataId);
         return false;
     }
 
-
     /**点击事件*/
     BaseIframe.prototype.eventses = function () {
         //关闭按钮
@@ -189,14 +208,14 @@
         });
         //切换tab
         tabContainer.find("#page-tabs a").click(function () {
-            console.log("点击a: ", this);
+            // console.log("点击a: ", this);
             let dataId = $(this).data('id');
             // var menuName = $(this).text();
-            let menuName = $(this).attr('name');
+            // let menuName = $(this).attr('name');
             let dataUrl = $(this).attr('url');
             let dataIndex = $(this).data('index');
             BaseIframe.prototype.openIframe({
-                dataUrl, menuName, dataIndex, dataId
+                dataUrl, dataIndex, dataId
             });
         });
 
@@ -204,6 +223,17 @@
 
     //新增一个Iframe页
     BaseIframe.prototype.addIframe = function (obj) {
+        let bAdd = false;
+        for(let i=0;i<openTabs.length;i++){
+            if(obj.id=== openTabs[i].id){
+                bAdd = true;
+                break;
+            }
+        }
+        if(bAdd){
+            console.log('已添加过标签');
+            return;
+        }
         let _index = $('#page-tabs a').length;
         let nav_a = $(this.template.nav_a.format(obj.id,_index,obj.text,obj.url));
         //如果可关闭,插入关闭图标,并绑定关闭事件
@@ -216,10 +246,13 @@
         nav_item.append(nav_a);
         tabContainer.find('#page-tabs').append(nav_item);
         BaseIframe.prototype.eventses();
-
+        //添加标签记录
+        openTabs.push({id:obj.id});
+        // 同时处理顶部 breadcrumb,breadcrumb 根据 iframe name 区分
+        breadcrumbMap.set(obj.id,[]);
         //自动切换到当前页面
         BaseIframe.prototype.openIframe({
-            dataUrl:obj.url, menuName:obj.text, dataIndex:_index, dataId:obj.id
+            dataUrl:obj.url, dataIndex:_index, dataId:obj.id
         });
     }
 
@@ -244,13 +277,19 @@
     BaseIframe.prototype.remove = function (obj) {
         frameContainer.find("#iframe-content iframe[data-id='" + obj + "']").remove();
         tabContainer.find("#page-tabs a[data-id='" + obj + "']").parent().remove();
+        for (let i=0;i<openTabs.length;i++){
+            if(obj === openTabs[i].id){
+                openTabs.splice(i,1);
+                break;
+            }
+        }
         //设置一个显示的元素
         tabContainer.find('#page-tabs a').eq(0).addClass('active');
         frameContainer.find("#iframe-content iframe").eq(0).css("display", "inline");
         if (tabContainer.find('#page-tabs a').length > 0) {
             let a = tabContainer.find('#page-tabs a').eq(0);//todo 找到第一个a标签取出数据
             this.openIframe({
-                dataUrl: a.attr('url'), menuName: a.attr('name'), dataIndex: a.data('index'), dataId: a.data('id')
+                dataUrl: a.attr('url'),dataIndex: a.data('index'), dataId: a.data('id')
             });
         }
     }
@@ -264,9 +303,54 @@
         BaseIframe.prototype.openIframe(dataUrl, tabId, dataIndex);
     }
 
+    BaseIframe.prototype.showBreadcrumb = function(callback){
+        $(".breadcrumb").html('');
+        breadcrumb.forEach((value, index, array)=>{
+            let _breadcrumb_item_li = '<li class="breadcrumb-item"><a name="{2}" href="javascript:void(0);">{1}</a></li>';
+            let _breadcrumb_item = $(_breadcrumb_item_li.format(value.url, value.name, value.index));
+            $(".breadcrumb").append(_breadcrumb_item);
+            _breadcrumb_item.click(()=>{
+                if(value.index == breadcrumb[breadcrumb.length-1].index) return;
+                let _id = BaseIframe.prototype.getCurrentIframeId();
+                console.log({
+                    dataUrl:value.url, indexName:value.name, dataIndex:value.index, dataId:_id
+                });
+                let _frame = window.frames[_id];
+                _frame.history.go(-(breadcrumb.length-value.index));
+                if(callback)
+                    callback(value);
+            });
+        })
+    }
+
+    BaseIframe.prototype.setBreadcrumb = function(item){
+        let {index} = item;
+        let hasIndex = false;
+        let spliceIndex = 0;
+        for (let i=0;i<breadcrumb.length;i++){
+            if(index === breadcrumb[i].index){
+                hasIndex = true;
+                spliceIndex =i;
+                // console.log(index,i);
+                break;
+            }
+        }
+        if(hasIndex){
+            console.log("splice1",spliceIndex)
+            breadcrumb.splice(spliceIndex+1,breadcrumb.length-1);
+        }else{
+            console.log("splice2",item.url, item.name, item.index)
+            breadcrumb.push(item);
+        }
+        BaseIframe.prototype.showBreadcrumb((value)=>{
+            BaseIframe.prototype.setBreadcrumb(value);
+        });
+        console.log(breadcrumb);
+    }
+
     //获取当前活动iframe页的ID
     BaseIframe.prototype.getCurrentIframeId = function () {
-        var id = tabContainer.find("#page-tabs .active a").attr("name");
+        let id = tabContainer.find("#page-tabs .active").attr("data-id");
         console.log('id', id);
         return id;
     }

+ 8 - 0
src/main/resources/templates/app/level-detail.ftl

@@ -10,6 +10,7 @@
     <link rel="stylesheet" href="../main-plugins/bootstrap-datepicker/css/bootstrap-datepicker3.min.css"/>
 
     <link href="../main-plugins/bootstrap-fileinput/css/fileinput.min.css" media="all" rel="stylesheet" type="text/css">
+    <#assign TITLE="新的关卡",URL="${req.contextPath}/backstage_level/upload", INDEX=1>
 
 
 </head>
@@ -234,5 +235,12 @@
     $("#formBasic").attr("action", "${req.contextPath}/backstage_level/upload");
     </#if>
 </script>
+
+<script type="text/javascript">
+    function callParent(){
+        parent.setBreadcrumb({url:"${URL}",index:${INDEX},name:"${TITLE}"});
+    }
+    callParent();
+</script>
 </body>
 </html>

+ 8 - 0
src/main/resources/templates/app/level.ftl

@@ -3,6 +3,8 @@
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
 <#include "../common/header.ftl">
 <#setting number_format="#">
+<#assign TITLE="关卡列表",URL="${req.contextPath}/backstage_level/upload", INDEX=1>
+
 <body class="font-opensans  sidebar_dark">
 <!-- Page Loader -->
 <div class="page-loader-wrapper">
@@ -131,5 +133,11 @@
 <script src="../main-bundles/lib.vendor.bundle.js"></script>
 <!-- Start core js and page js -->
 <script src="../js/core.js"></script>
+<script type="text/javascript">
+    function callParent(){
+        parent.setBreadcrumb({url:"${URL}",index:${INDEX},name:"${TITLE}"});
+    }
+    callParent();
+</script>
 </body>
 </html>

+ 7 - 0
src/main/resources/templates/ble/generate.ftl

@@ -1,6 +1,7 @@
 <!DOCTYPE html>
 <#include "../common/header.ftl">
 <#setting number_format="#">
+<#assign TITLE="生成蓝牙信息",URL="${req.contextPath}/backstage_ble/generateBLESingleData", INDEX=1>
 
 <html lang="en">
 <head>
@@ -182,5 +183,11 @@
 <script src="../main-bundles/lib.vendor.bundle.js"></script>
 <!-- Start core js and page js -->
 <script src="../js/core.js"></script>
+<script type="text/javascript">
+    function callParent(){
+        parent.setBreadcrumb({url:"${URL}",index:${INDEX},name:"${TITLE}"});
+    }
+    callParent();
+</script>
 </body>
 </html>

+ 8 - 0
src/main/resources/templates/ble/list.ftl

@@ -1,6 +1,7 @@
 <!DOCTYPE html>
 <#include "../common/header.ftl">
 <#setting number_format="#">
+<#assign TITLE="蓝牙列表",URL="${req.contextPath}/backstage_ble/list", INDEX=1>
 
 <html lang="en">
 <head>
@@ -202,5 +203,12 @@
 <script src="../main-bundles/lib.vendor.bundle.js"></script>
 <!-- Start core js and page js -->
 <script src="../js/core.js"></script>
+
+<script type="text/javascript">
+    function callParent(){
+        parent.setBreadcrumb({url:"${URL}",index:${INDEX},name:"${TITLE}"});
+    }
+    callParent();
+</script>
 </body>
 </html>

+ 8 - 0
src/main/resources/templates/device/generate.ftl

@@ -1,6 +1,7 @@
 <!DOCTYPE html>
 <#include "../common/header.ftl">
 <#setting number_format="#">
+<#assign TITLE="生成二维码",URL="${req.contextPath}/backstage_device/generateDeviceCode", INDEX=1>
 
 <html lang="en">
 <head>
@@ -156,5 +157,12 @@
 <script src="../main-bundles/lib.vendor.bundle.js"></script>
 <!-- Start core js and page js -->
 <script src="../js/core.js"></script>
+
+<script type="text/javascript">
+    function callParent(){
+        parent.setBreadcrumb({url:"${URL}",index:${INDEX},name:"${TITLE}"});
+    }
+    callParent();
+</script>
 </body>
 </html>

+ 8 - 0
src/main/resources/templates/device/list.ftl

@@ -1,6 +1,7 @@
 <!DOCTYPE html>
 <#include "../common/header.ftl">
 <#setting number_format="#">
+<#assign TITLE="设备列表",URL="${req.contextPath}/backstage_device/list", INDEX=1>
 
 <html lang="en">
 <head>
@@ -218,5 +219,12 @@
 <script src="../main-bundles/lib.vendor.bundle.js"></script>
 <!-- Start core js and page js -->
 <script src="../js/core.js"></script>
+
+<script type="text/javascript">
+    function callParent(){
+        parent.setBreadcrumb({url:"${URL}",index:${INDEX},name:"${TITLE}"});
+    }
+    callParent();
+</script>
 </body>
 </html>

+ 8 - 0
src/main/resources/templates/game/detail.ftl

@@ -10,6 +10,7 @@
     <link rel="stylesheet" href="../main-plugins/bootstrap-datepicker/css/bootstrap-datepicker3.min.css"/>
 
     <link href="../main-plugins/bootstrap-fileinput/css/fileinput.min.css" media="all" rel="stylesheet" type="text/css">
+    <#assign TITLE="新的游戏",URL="${req.contextPath}/backstage_game/upload_new_game", INDEX=1>
 
 
 </head>
@@ -393,5 +394,12 @@
         }
     });
 </script>
+
+<script type="text/javascript">
+    function callParent(){
+        parent.setBreadcrumb({url:"${URL}",index:${INDEX},name:"${TITLE}"});
+    }
+    callParent();
+</script>
 </body>
 </html>

+ 7 - 1
src/main/resources/templates/game/list.ftl

@@ -4,6 +4,7 @@
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
     <#include "../common/header.ftl">
     <#setting number_format="#">
+    <#assign TITLE="游戏列表",URL="${req.contextPath}/backstage_game/list", INDEX=1>
 
 </head>
 <body class="font-opensans  sidebar_dark ">
@@ -431,7 +432,12 @@
     //     })
     // });
 </script>
-
+<script type="text/javascript">
+    function callParent(){
+        parent.setBreadcrumb({url:"${URL}",index:${INDEX},name:"${TITLE}"});
+    }
+    callParent();
+</script>
 </body>
 
 </html>

+ 26 - 13
src/main/resources/templates/index.ftl

@@ -4,6 +4,7 @@
 <#include "common/header.ftl">
 <link rel="stylesheet" href="../css/main-css/theme3.css" id="stylesheet"/>
 <#setting number_format="#">
+
 <body class="font-opensans  sidebar_dark">
 <!-- Page Loader -->
 <div class="page-loader-wrapper">
@@ -24,14 +25,20 @@
             <div class="container-fluid"  >
                 <div class="page-header">
                     <div class="left">
-                        <#if profiles == 'prd'>
-                            <h1 class="page-title">哔蹦后台管理系统</h1>
-                        <#else >
-                            <h1 class="page-title">哔蹦测试后台管理系统</h1>
-                        </#if>
-
+<#--                        <#if profiles == 'prd'>-->
+<#--                            <h1 class="page-title">哔蹦后台管理系统</h1>-->
+<#--                        <#else >-->
+<#--                            <h1 class="page-title">哔蹦测试后台管理系统</h1>-->
+<#--                        </#if>-->
+                        <nav aria-label="breadcrumb">
+                            <ol class="breadcrumb" style="margin-bottom: 0;">
+                            <#--    iframe.setBreadcrumb()添加    -->
+                            </ol>
+                        </nav>
                     </div>
+
                     <div class="right">
+
                         <div class="notification d-flex">
                             <button type="button" class="btn btn-facebook"><i class="fa fa-info-circle mr-2"></i>Need Help</button>
                             <button type="button" class="btn btn-facebook"><i class="fa fa-file-text mr-2"></i>Data export</button>
@@ -59,23 +66,29 @@
 <script src="../js/core.js"></script>
 <script src="../js/iframe/iframe.js"></script>
 <script>
+
     let  iframe = $('.page').iframes({
         data: [{
-            id: 'home',
+            id: 'User-List',
             text: '用户',
             url: "${req.contextPath}/backstage_user/list",
             closeable: true
         }, {
-            id: 'device',
-            text: '设备列表',
-            url: "${req.contextPath}/backstage_device/list"
-            , closeable: true
+            id: 'QR-Device',
+            text: '二维码列表',
+            url: "${req.contextPath}/backstage_device/list",
+            closeable: true
         }],
         //showIndex: 1,
         loadAll: false,
         tabContainer:"tabContainer",
         frameContainer:"frameContainer"
     })
+
+    function setBreadcrumb(item){
+        // alert("parent_addBreadcrumb"+JSON.stringify(item));
+       iframe.setBreadcrumb(item);
+    }
     // iframe.showIframe('home');//根据数据属性id设置
     $('#IdUserList').on('click', function() {
         iframe.addIframe({
@@ -89,8 +102,8 @@
         iframe.addIframe({
             id: 'QR-Device',
             text: '二维码列表',
-            url: "${req.contextPath}/backstage_device/list"
-            , closeable: true
+            url: "${req.contextPath}/backstage_device/list",
+            closeable: true
         });
     });
     $('#IdQRCodeGenerate').on('click', function() {

+ 8 - 1
src/main/resources/templates/log/client.ftl

@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <#include "../common/header.ftl">
 <#setting number_format="#">
-
+<#assign TITLE="日志",URL="${req.contextPath}/backstage_log/list", INDEX=1>
 <html lang="en">
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
@@ -55,5 +55,12 @@
 <script src="../js/core.js"></script>
 
 <script src="../js/chart/echart.js"></script>
+
+<script type="text/javascript">
+    function callParent(){
+        parent.setBreadcrumb({url:"${URL}",index:${INDEX},name:"${TITLE}"});
+    }
+    callParent();
+</script>
 </body>
 </html>

+ 9 - 0
src/main/resources/templates/picture/list.ftl

@@ -4,6 +4,8 @@
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
     <#include "../common/header.ftl">
     <#setting number_format="#">
+    <#assign TITLE="图片列表",URL="${req.contextPath}/backstage_picture/upload", INDEX=1>
+
     <link href="../main-plugins/bootstrap-fileinput/css/fileinput.min.css" media="all" rel="stylesheet" type="text/css">
 
     <style>
@@ -214,5 +216,12 @@
         allowedFileExtensions: ["jpg", "png", "gif"]
     });
 </script>
+
+<script type="text/javascript">
+    function callParent(){
+        parent.setBreadcrumb({url:"${URL}",index:${INDEX},name:"${TITLE}"});
+    }
+    callParent();
+</script>
 </body>
 </html>

+ 7 - 1
src/main/resources/templates/tag/list.ftl

@@ -4,6 +4,7 @@
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
     <#include "../common/header.ftl">
     <#setting number_format="#">
+    <#assign TITLE="标签列表",URL="${req.contextPath}/backstage_tag/list", INDEX=1>
     <!-- Plugins css -->
     <link rel="stylesheet" href="../main-plugins/datatable/dataTables.bootstrap4.min.css">
     <link rel="stylesheet" href="../main-plugins/datatable/fixedeader/dataTables.fixedcolumns.bootstrap4.min.css">
@@ -108,6 +109,11 @@
 <!-- Start core js and page js -->
 <script src="../js/core.js"></script>
 <script src="../js/table/datatable.js"></script>
-
+<script type="text/javascript">
+    function callParent(){
+        parent.setBreadcrumb({url:"${URL}",index:${INDEX},name:"${TITLE}"});
+    }
+    callParent();
+</script>
 </body>
 </html>

+ 10 - 1
src/main/resources/templates/user/detail.ftl

@@ -1,6 +1,7 @@
 <!DOCTYPE html>
 <html lang="en">
 <#include "../common/header.ftl">
+<#assign TITLE="详情",URL="${req.contextPath}/backstage_user/detail", INDEX=2>
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
 </head>
@@ -15,7 +16,7 @@
     <div class="container-fluid " style="margin-top: 10px;">
         <div class="card">
             <div class="card-header">
-                <h3>详情</h3>
+                <h3>${TITLE}</h3>
             </div>
             <div class="card-body">
                 <table class="table table-bordered">
@@ -73,5 +74,13 @@
 <script src="../main-bundles/lib.vendor.bundle.js"></script>
 <!-- Start core js and page js -->
 <script src="../js/core.js"></script>
+
+<script type="text/javascript">
+    function callParent() {
+        parent.setBreadcrumb({url:"${URL}", index:${INDEX}, name:"${TITLE}"});
+    }
+
+    callParent();
+</script>
 </body>
 </html>

+ 11 - 5
src/main/resources/templates/user/list.ftl

@@ -3,6 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
 <#include "../common/header.ftl">
 <#setting number_format="#">
+<#assign TITLE="用户",URL="${req.contextPath}/backstage_user/list", INDEX=1>
 <body class="font-opensans">
 <!-- Page Loader -->
 <div class="page-loader-wrapper">
@@ -14,14 +15,11 @@
     <div style="height: 10px;"></div>
     <div class="container-fluid">
         <div class="card">
-            <div class="card-header">
-                <h3 class="card-title">用户名字</h3>
-            </div>
             <div class="card-body">
                 <form role="form" name="nickForm" method="post"
                       action="${req.contextPath}/backstage_user/searchUserInfo">
                     <div class="input-group mb-3 ">
-                        <input type="text" class="form-control" name="username"
+                        <input type="text" class="form-control" name="username" placeholder="输入用户名字"
                                value="${(username)!''}"/>
                         <#if username??>
                             <label>当前页数</label>
@@ -146,6 +144,14 @@
 <!-- jQuery and bootstrtap js -->
 <script src="../main-bundles/lib.vendor.bundle.js"></script>
 <!-- Start core js and page js -->
-<script src="../js/core.js"></script>
+<script src="../js/core.js">
+
+</script>
+<script type="text/javascript">
+    function callParent(){
+        parent.setBreadcrumb({url:"${URL}",index:${INDEX},name:"${TITLE}"});
+    }
+    callParent();
+</script>
 </body>
 </html>