1
|
|
|
app.run(function($rootScope, $transitions, $timeout, $q, $trace){ |
2
|
|
|
// http://prismjs.com/extending.html#highlight-all |
3
|
|
|
// Rerun Prism syntax highlighting on the current page |
4
|
|
|
// http://prismjs.com/plugins/normalize-whitespace/ |
5
|
|
|
Prism.plugins.NormalizeWhitespace.setDefaults({ |
6
|
|
|
// 'remove-trailing': true, |
7
|
|
|
// 'remove-indent': true, |
8
|
|
|
'left-trim': true, |
9
|
|
|
// 'right-trim': true, |
10
|
|
|
/*'break-lines': 80, |
11
|
|
|
'indent': 2, |
12
|
|
|
'remove-initial-line-feed': false, |
13
|
|
|
'tabs-to-spaces': 4, |
14
|
|
|
'spaces-to-tabs': 4*/ |
15
|
|
|
}); |
16
|
|
|
|
17
|
|
|
$rootScope.imageShowcaseCounter = 0; |
18
|
|
|
|
19
|
|
|
// multi-language setting |
20
|
|
|
// $rootScope.langInstance = new Lang(); |
21
|
|
|
// $rootScope.langInstance.init({ |
22
|
|
|
// defaultLang: 'en', |
23
|
|
|
// currentLang: 'en', |
24
|
|
|
// }); |
25
|
|
|
|
26
|
|
|
// $rootScope.switchLanguage = function(langCode_iso639){ |
27
|
|
|
// $rootScope.langInstance.change(langCode_iso639) |
28
|
|
|
// } |
29
|
|
|
|
30
|
|
|
// initial the menu after the ng-include finished |
31
|
|
|
$rootScope.$on("$includeContentLoaded", function(event, templateName){ |
32
|
|
|
}); |
33
|
|
|
// https://docs.angularjs.org/api/ng/service/$location#events |
34
|
|
|
$rootScope.$on("$locationChangeStart", function(event, nUrl, oUrl, newState, oldState){ |
35
|
|
|
}); |
36
|
|
|
$rootScope.$on("$locationChangeSuccess", function(event, nUrl, oUrl, newState, oldState){ |
37
|
|
|
}); |
38
|
|
|
|
39
|
|
|
// https://docs.angularjs.org/api/ngRoute/directive/ngView#event-$viewContentLoaded |
40
|
|
|
$rootScope.$on("$viewContentLoaded", function(targetScope){ |
41
|
|
|
Prism.highlightAll(); |
42
|
|
|
Prism.fileHighlight(); |
43
|
|
|
|
44
|
|
|
$('.nav-tabs a').click(function (e) { |
45
|
|
|
e.preventDefault() |
46
|
|
|
$(this).tab('show') |
47
|
|
|
}) |
48
|
|
|
|
49
|
|
|
// if add <base target="_self"> in index.html, no effect. |
50
|
|
|
$('.nav-tabs a').attr('target','_self'); |
51
|
|
|
|
52
|
|
|
}); |
53
|
|
|
|
54
|
|
|
// https://ui-router.github.io/guide/transitions#lifecycle-events |
55
|
|
|
$transitions.onFinish({}, function(transition) { |
56
|
|
|
// console.dir("onFinish Transition from " + transition.from().name + |
57
|
|
|
// " to " + transition.to().name) |
58
|
|
|
}); |
59
|
|
|
|
60
|
|
|
$transitions.onSuccess({}, function(transition) { |
61
|
|
|
load_sbAdmin2Js(transition); |
62
|
|
|
create_custom_modal_listner(); |
63
|
|
|
var pageName = transition.to().name; |
64
|
|
|
|
65
|
|
|
|
66
|
|
|
$(".nav-item a").removeClass("active"); |
67
|
|
|
$(".nav-item").removeClass("active"); |
68
|
|
|
$("[ui-sref="+pageName+"]").addClass("active"); |
69
|
|
|
$("[ui-sref="+pageName+"]").parent(".nav-item").addClass("active"); |
70
|
|
|
|
71
|
|
|
// multi-language setting |
72
|
|
|
// $rootScope.langInstance.dynamic('en', '../demo/lang/demoHome.en.json'); |
73
|
|
|
// $rootScope.langInstance.dynamic('zh-hans', '../demo/lang/demoHome.zh-hans.json'); |
74
|
|
|
// $rootScope.langInstance.dynamic('zh-hant', '../demo/lang/demoHome.zh-hant.json'); |
75
|
|
|
|
76
|
|
|
// $rootScope.langInstance.dynamic('en', '../demo/lang/'+pageName+'.en.json'); |
77
|
|
|
// $rootScope.langInstance.dynamic('zh-hans', '../demo/lang/'+pageName+'.zh-hans.json'); |
78
|
|
|
// $rootScope.langInstance.dynamic('zh-hant', '../demo/lang/'+pageName+'.zh-hant.json'); |
79
|
|
|
// $rootScope.langInstance.loadPack($rootScope.langInstance.currentLang, function(err, lang, path){ |
80
|
|
|
// if (!err) { |
81
|
|
|
// } else { |
82
|
|
|
// console.log("load language pack failure") |
83
|
|
|
// console.log(err) |
84
|
|
|
// console.log(lang) |
85
|
|
|
// console.log(path) |
86
|
|
|
// } |
87
|
|
|
// }); |
88
|
|
|
}) |
89
|
|
|
|
90
|
|
|
function load_sbAdmin2Js(transition){ |
91
|
|
|
var toID = transition.$id; |
|
|
|
|
92
|
|
|
var toName = transition.to().name; |
93
|
|
|
var childName = toName.split("."); |
|
|
|
|
94
|
|
|
|
95
|
|
|
var t = jQuery; |
96
|
|
|
t("#sidebarToggle, #sidebarToggleTop").on("click",function(o){t("body").toggleClass("sidebar-toggled"),t(".sidebar").toggleClass("toggled"),t(".sidebar").hasClass("toggled")&&t(".sidebar .collapse").collapse("hide")}),t(window).resize(function(){t(window).width()<768&&t(".sidebar .collapse").collapse("hide")}),t("body.fixed-nav .sidebar").on("mousewheel DOMMouseScroll wheel",function(o){if(768<t(window).width()){var e=o.originalEvent,l=e.wheelDelta||-e.detail;this.scrollTop+=30*(l<0?1:-1),o.preventDefault()}}),t(document).on("scroll",function(){100<t(this).scrollTop()?t(".scroll-to-top").fadeIn():t(".scroll-to-top").fadeOut()}),t(document).on("click",".scroll-to-top",function(o){var e=t(this);var h=e.attr('href')||e.data('href');t("html, body").stop().animate({scrollTop:t(h).offset().top},1e3,"easeInOutExpo"),o.preventDefault()}); |
|
|
|
|
97
|
|
|
|
98
|
|
|
// 20191016, keithpoon, change all header color |
99
|
|
|
$("h1").addClass("text-gray-900"); |
100
|
|
|
$("h2").addClass("text-gray-900"); |
101
|
|
|
$("h3").addClass("text-gray-900"); |
102
|
|
|
$("h4").addClass("text-gray-900"); |
103
|
|
|
$("h5").addClass("text-gray-800"); |
104
|
|
|
$("h6").addClass("text-gray-800"); |
105
|
|
|
} |
106
|
|
|
|
107
|
|
|
function create_custom_modal_listner(){ |
108
|
|
|
$(document).on('click', '[data-toggle="lightbox"]', function(event){ |
109
|
|
|
event.preventDefault(); |
110
|
|
|
var jqObj = $(this); |
111
|
|
|
var jsObj = this; |
112
|
|
|
|
113
|
|
|
var modalObj = extract_modal_info(jqObj, jsObj); |
114
|
|
|
|
115
|
|
|
load_custom_modal(modalObj); |
116
|
|
|
}); |
117
|
|
|
} |
118
|
|
|
|
119
|
|
|
function extract_modal_info(jqObj, jsObj){ |
120
|
|
|
var modalObj = { |
121
|
|
|
modalTitle: "", |
122
|
|
|
modalContent: "", |
123
|
|
|
modalFooter: "" |
124
|
|
|
}; |
125
|
|
|
|
126
|
|
|
var elementContent = jqObj.html(); |
127
|
|
|
var elementTitle = ""; |
128
|
|
|
var elementFooter = ""; |
129
|
|
|
|
130
|
|
|
$.each(this.attributes, function() { |
131
|
|
|
// this.attributes is not a plain object, but an array |
132
|
|
|
// of attribute nodes, which contain both the name and value |
133
|
|
|
if(this.specified) { |
134
|
|
|
var attrName = this.name; |
135
|
|
|
var attrValue = this.value; |
136
|
|
|
|
137
|
|
|
if(attrName == "data-title") elementTitle = attrValue; |
138
|
|
|
} |
139
|
|
|
}); |
140
|
|
|
|
141
|
|
|
modalObj.modalContent = elementContent; |
142
|
|
|
modalObj.modalTitle = elementTitle; |
143
|
|
|
modalObj.modalFooter = elementFooter; |
144
|
|
|
|
145
|
|
|
return modalObj; |
146
|
|
|
} |
147
|
|
|
|
148
|
|
|
function load_custom_modal(modalObj){ |
149
|
|
|
remove_modal(); |
150
|
|
|
create_modal(modalObj); |
151
|
|
|
} |
152
|
|
|
|
153
|
|
|
function remove_modal(){ |
154
|
|
|
$(".imageShowcaseModal").off(); |
155
|
|
|
$(".imageShowcaseModal").remove(); |
156
|
|
|
$(".modal-backdrop").off(); |
157
|
|
|
$(".modal-backdrop").remove(); |
158
|
|
|
} |
159
|
|
|
|
160
|
|
|
/* |
161
|
|
|
function create_modal(modalContent, modalTitle, modalFooter){ |
162
|
|
|
if (typeof(modalTitle) == "undefined") modalTitle = ""; |
163
|
|
|
if (typeof(modalFooter) == "undefined") modalFooter = ""; |
164
|
|
|
*/ |
165
|
|
|
function create_modal(modalObj){ |
166
|
|
|
var modalContent = modalObj.modalContent; |
167
|
|
|
var modalTitle = modalObj.modalTitle; |
168
|
|
|
var modalFooter = modalObj.modalFooter; |
169
|
|
|
|
170
|
|
|
$rootScope.imageShowcaseCounter += 1; |
171
|
|
|
|
172
|
|
|
var modal_id = "imageShowcase_"+$rootScope.imageShowcaseCounter; |
173
|
|
|
|
174
|
|
|
var modal = ''+ |
175
|
|
|
'<div class="modal fade imageShowcaseModal" id="'+modal_id+'" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">'+ |
176
|
|
|
'<div class="modal-dialog modal-full" role="document">'+ |
177
|
|
|
'<div class="modal-content">'+ |
178
|
|
|
'<div class="modal-header">'+ |
179
|
|
|
'<h5 class="modal-title" id="exampleModalLabel">'+modalTitle+'</h5>'+ |
180
|
|
|
'<button type="button" class="close" data-dismiss="modal" aria-label="Close">'+ |
181
|
|
|
'<span aria-hidden="true">×</span>'+ |
182
|
|
|
'</button>'+ |
183
|
|
|
'</div>'+ |
184
|
|
|
'<div class="modal-body">'+ |
185
|
|
|
modalContent+ |
186
|
|
|
'</div>'+ |
187
|
|
|
'<div class="modal-footer">'+ |
188
|
|
|
modalFooter+ |
189
|
|
|
'</div>'+ |
190
|
|
|
'</div>'+ |
191
|
|
|
'</div>'+ |
192
|
|
|
'</div>'; |
193
|
|
|
$("body").append(modal); |
194
|
|
|
|
195
|
|
|
$("#"+modal_id).modal('show'); |
196
|
|
|
$("#"+modal_id+" button.close").click(function(){ |
197
|
|
|
$("#"+modal_id).modal('hide'); |
198
|
|
|
}) |
199
|
|
|
} |
200
|
|
|
|
201
|
|
|
}); |