/* webfan (C) Till Wehowski, Webfan.de - All rights reserved. */
/**
<ul ng-flows="webfan.gui" ng-controller="MenuCtrl" id="{{main.id}}" role="menu" style="display: inline;">
<li ng-repeat="(id, Menu) in main.menu" id="{{id}}">
<a class="menu_trigger" href="javascript:;" ng-bind-html="Menu.title"></a>
<ul class="menu" flow-menu-id="{{id}}-{{Menu.title}}" style="display: none; z-index: 1007;">
<li ng-repeat="item in Menu.items">
<a href="javascript:;" ng-click="item.on(item.url)" ng-bind-html="item.title"></a>
</li>
</ul>
</li>
</ul>
var _Menu_Webfan = '';
_Menu_Webfan+='<ul ng-flows="webfan.gui" ng-controller="MenuCtrl" id="{{main.id}}" role="menu" style="display: inline;">';
_Menu_Webfan+=' <li ng-repeat="(id, Menu) in main.menu" id="{{id}}"> ';
_Menu_Webfan+=' <a class="menu_trigger" href="javascript:;" ng-bind-html="Menu.title"></a> ';
_Menu_Webfan+=' <ul class="menu" flow-menu-id="{{id}}-{{Menu.title}}" style="display: none; z-index: 1007;"> ';
_Menu_Webfan+=' <li ng-repeat="item in Menu.items">';
_Menu_Webfan+=' <a href="javascript:;" ng-click="item.on(item.url)" ng-bind-html="item.title"></a> ';
_Menu_Webfan+=' </li> ';
_Menu_Webfan+=' </ul>';
_Menu_Webfan+=' </li>';
_Menu_Webfan+='</ul> ';
*/
var SCOPE;
var mod = frdl.overload(Object.create({}), function(name,args){
if('function' === typeof SCOPE[name])return SCOPE[name].apply(SCOPE, args);
if('undefined' !== typeof SCOPE[name])return SCOPE[name];
console.error(__FILE__ + '::' + name + ' is UNRESOLVED!');
});
frdl.a
.module('webfan.gui')
.controller('MenuCtrl', ['$scope', '$http', '$sce', function($scope, $http, $sce){
var jDialogBox = $('#'+frdl.wd().o.doms.DialogBoxModal.substr(1,frdl.wd().o.doms.DialogBoxModal.length));
var w = window.top || window;
var isTabs = function(){
return ('function' === typeof w.Tabs) ? true : false;
};
$scope.main = {
id : 'menu_top',
menu : {
'menu_top_desktop' : {
title : $sce.trustAsHtml('<span>Workspace</span>'),
items : [
{
title : $sce.trustAsHtml('<span>Toggle</span>'),
on : function(){
frdl.wd().toggleDesktop();
},
url : '#'
},
{
title : $sce.trustAsHtml('Exit'),
on : function(){
frdl.alert.log('ToDo: Save data and shutdown methods...');
frdl.alert.confirm('Exit now?', function(yes){
if(yes){
if(true === navigator['-webkit-webfan']){
navigator.webfan.quit();
}else{
if(!!window.opener){
window.close();
}else{
frdl.alert.error('Cannot close top window by script. Use your browser please!');
}
}
}else{
/* frdl.alert.log('Abort.'); */
}
});
},
url : '#'
}
]
},
'menu_top_program': {
title : $sce.trustAsHtml('<span>Program</span>'),
items : [
]
},
'menu_top_open': {
title : $sce.trustAsHtml('<span>File</span>'),
items : [
]
},
'menu_top_about': {
title : $sce.trustAsHtml('<span>Help</span>'),
items : [
{
title : $sce.trustAsHtml('<span>About</span>...'),
on : function(){
var url = Array.prototype.slice.call(arguments)[0];
if('function'===typeof w.Tabs){
if(true===navigator['-webkit-webfan']){
w.Tabs().addTab('Credits', webfan['$fs --local root']() + 'credits.html', null, 'frame.trusted', true, undefined, true);
}
setTimeout(function(){
w.Tabs().addTab('About...', url, null, ((true===navigator['-webkit-webfan']) ? 'frame.trusted' : 'browser'), true, undefined, true);
}, 250);
}else{
jDialogBox.wd_dialogs({loadUrl : url, title : 'About...'});
}
},
url : (true===navigator['-webkit-webfan'])
? './about.html'
: webfan['$root-app']() + '/cdn/application/webfan/about.html'
},
{
title : $sce.trustAsHtml('<span>Support</span>'),
on : function(){
var url = Array.prototype.slice.call(arguments)[0];
if('function'===typeof w.Tabs){
w.Tabs().addTab('Support', url, null, 'browser', true, undefined, true);
}else{
jDialogBox.wd_dialogs({loadUrl : url, title : 'Support'});
}
},
url : 'http://www.webfan.de/TicketSystem.html'
},
{
title : $sce.trustAsHtml('<span>imprint</span>'),
on : function(){
var url = Array.prototype.slice.call(arguments)[0];
if('function'===typeof w.Tabs){
w.Tabs().addTab('imprint', url, null, 'browser', true, undefined, true);
}else{
jDialogBox.wd_dialogs({loadUrl : url, title : 'imprint'});
}
},
url : 'http://www.webfan.de/Impressum.html'
}
]
}
}
};
$scope.add = function(parent, menu){
menu.title = $sce.trustAsHtml(menu.title);
$scope.main.menu[parent].items.push(menu);
return $scope;
};
$scope.remove = function(parent, menu){
if('string' === menu){
frdl.each($scope.main.menu[parent], function(i, m){
if(menu === m.title || menu === m.url){
menu = m;
}
});
}
$scope.main.menu[parent].items.splice($scope.main.menu[parent].items.indexOf(menu), 1);
return $scope;
};
$scope.addOpenedTabs = function(tabs){
var items = [];
frdl.each(tabs, function(i, tab){
items.push({
title : $sce.trustAsHtml(tab.title),
on : tab.open,
url : tab.url
});
});
$scope.main.menu.menu_top_open.items = items;
$scope.$digest();
};
$scope.getOpenTags = function(apply){
var tabs = [{
title : '<span>My.Webfan</span>',
open : function(){
var url = Array.prototype.slice.call(arguments)[0];
try{
if( true === isTabs() ){
w.Tabs().addTab('Start', '/com.webfan.my/' + 'start', '', 'html', false, {name:'start', params:{}}, true, false);
}else{
window.location.href = url;
}
} catch(err){
console.error(err);
}
},
url : webfan['$root-app']() + '/cdn/application/webfan/app.html'
}];
if(true === isTabs())tabs = w.Tabs().tabs;
if(0<tabs.length && true === apply){
$scope.addOpenedTabs(tabs);
}
return tabs;
};
/*
$scope.$watchCollection(function(scope) {
return $scope.getOpenTags(false);
},
function(newValue, oldValue) {
if(newValue.length !== oldValue.length) {
$scope.getOpenTags(true);
}
});
*/
var watchTags = function(){
$scope.getOpenTags(true);
frdl.translate();
webfan.$Async(watchTags,4000);
};
webfan.$Async(function(){
watchTags();
},1);
/*
frdl.cron.add('webfan.gui.MenuCtrl.addOpenedTabs-from-getOpenTags', function(){
$scope.getOpenTags(true);
});
webfan.$Async(function(){
frdl.ready(frdl.translate);
},5000);
*/
SCOPE = $scope;
}]);
exports = module.exports = mod;
|