|
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
|
|
|
}); |