[297] | 1 | ////////////////////////////////////////////////////////////////////////////////
|
---|
| 2 | // File: MENU.AS
|
---|
| 3 | // Desc: File chứa các hàm và dữ liệu phục vụ việc khởi tạo, xử lý các chức
|
---|
| 4 | // năng của Menu, Toolbar, các nút bấm trên giao diện chính, các hộp
|
---|
| 5 | // nhập liệu (dialog) và hộp thoại (alert),...
|
---|
| 6 | //
|
---|
| 7 | // Author: Đinh Hải Minh, VicoSoft
|
---|
| 8 | // Date: 01/12/2003
|
---|
| 9 | ////////////////////////////////////////////////////////////////////////////////
|
---|
| 10 |
|
---|
| 11 | import mx.controls.Alert;
|
---|
| 12 |
|
---|
| 13 | function CreateMenuBar() {
|
---|
| 14 | /*
|
---|
| 15 | //
|
---|
| 16 | // CREATE THE MENUBAR OF APPLICATION
|
---|
| 17 | //
|
---|
| 18 |
|
---|
| 19 | // Delete all menu items
|
---|
| 20 | while( mnuBar.getMenuAt(0) ) mnuBar.removeMenuAt(0);
|
---|
| 21 |
|
---|
| 22 | var menuObj = new XML(
|
---|
| 23 | "<node label=\"" + lang.mnuFile + "\">"+
|
---|
| 24 | "<node label=\"" + lang.mnuNew + " (F2)\"/>"+
|
---|
| 25 | "<node label=\"" + lang.mnuOpen + "... (F3)\"/>"+
|
---|
| 26 | "<node label=\"" + lang.mnuSave + "\"/>"+
|
---|
| 27 | "<node label=\"" + lang.mnuSaveAs + "...\"/>"+
|
---|
| 28 | "<node type=\"separator\"/>"+
|
---|
| 29 | "<node label=\"" + lang.mnuLibrary + "... (Ctrl+L)\"/>"+
|
---|
| 30 | "<node label=\"" + lang.mnuPack + "... (F4)\"/>"+
|
---|
| 31 | "<node type=\"separator\"/>"+
|
---|
| 32 | "<node label=\"" + lang.mnuExit + "\"/>"+
|
---|
| 33 | "</node>");
|
---|
| 34 | mnuBar.addMenu(menuObj);
|
---|
| 35 |
|
---|
| 36 | var menuObj = new XML(
|
---|
| 37 | "<node label=\"" + lang.mnuEdit + "\">"+
|
---|
| 38 | "<node label=\"" + lang.mnuUndo + " (Ctrl+Z)\"/>"+
|
---|
| 39 | "<node label=\"" + lang.mnuRedo + " (Ctrl+Y)\"/>"+
|
---|
| 40 | "<node type=\"separator\"/>"+
|
---|
| 41 | "<node label=\"" + lang.mnuCut + " (Ctrl+X)\"/>"+
|
---|
| 42 | "<node label=\"" + lang.mnuCopy + " (Ctrl+C)\"/>"+
|
---|
| 43 | "<node label=\"" + lang.mnuPaste + " (Ctrl+V)\"/>"+
|
---|
| 44 | "<node type=\"separator\"/>"+
|
---|
| 45 | "<node label=\"" + lang.mnuMoveUp + " (Alt+↑)\"/>"+
|
---|
| 46 | "<node label=\"" + lang.mnuMoveDn + " (Alt+↓)\"/>"+
|
---|
| 47 | "</node>");
|
---|
| 48 | mnuBar.addMenu(menuObj);
|
---|
| 49 |
|
---|
| 50 | menuObj = new XML(
|
---|
| 51 | "<node label=\"" + lang.mnuContent + "\">"+
|
---|
| 52 | "<node label=\"" + lang.mnuAdd + " (F5)\"/>"+
|
---|
| 53 | "<node label=\"" + lang.mnuChange + " (F6)\"/>"+
|
---|
| 54 | "<node label=\"" + lang.mnuSync + " (F7)\"/>"+
|
---|
| 55 | "<node label=\"" + lang.mnuDelete + "\"/>"+
|
---|
| 56 | "<node type=\"separator\"/>"+
|
---|
| 57 | "<node label=\"" + lang.mnuCover + "\"/>"+
|
---|
| 58 | "<node label=\"" + lang.mnuLayout + " (F8)\"/>"+
|
---|
| 59 | "<node label=\"" + lang.mnuBackGround + "\"/>"+
|
---|
| 60 | "<node type=\"separator\"/>"+
|
---|
| 61 | "<node label=\"" + lang.mnuFullScr + " (F9)\"/>"+
|
---|
| 62 | "</node>");
|
---|
| 63 | mnuBar.addMenu(menuObj);
|
---|
| 64 |
|
---|
| 65 | menuObj = new XML(
|
---|
| 66 | "<node label=\"" + lang.mnuOption + "\">"+
|
---|
| 67 | (webbase? "":
|
---|
| 68 | "<node label=\"" + lang.mnuUpdateModules + "\"/>"+
|
---|
| 69 | "<node label=\"" + lang.mnuUpdateLayouts + "\"/>"+
|
---|
| 70 | "<node label=\"" + lang.mnuUpdateLibs + "\"/>"+
|
---|
| 71 | "<node type=\"separator\"/>"+
|
---|
| 72 | "<node label=\"" + lang.mnuSupport + "\">"+
|
---|
| 73 | "<node label=\"" + lang.mnuUniKey + "\"/>"+
|
---|
| 74 | "<node label=\"" + lang.mnuTeamViewer + "\"/>"+
|
---|
| 75 | "</node>"+
|
---|
| 76 | "<node type=\"separator\"/>")+
|
---|
| 77 | "<node label=\"" + lang.mnuOrigin + "\"/>"+
|
---|
| 78 | "<node label=\"" + lang.mnuConfig + "\"/>"+
|
---|
| 79 | "</node>");
|
---|
| 80 | mnuBar.addMenu(menuObj);
|
---|
| 81 |
|
---|
| 82 | menuObj = new XML(
|
---|
| 83 | "<node label=\"" + lang.mnuHelp + "\">"+
|
---|
| 84 | "<node label=\"" + lang.mnuHelpContent + " (F1)\"/>"+
|
---|
| 85 | (webbase? "":
|
---|
| 86 | "<node label=\"" + lang.mnuUpgrade + "\"/>")+
|
---|
| 87 | "<node type=\"separator\"/>"+
|
---|
| 88 | "<node label=\"" + lang.mnuAbout + "...\"/>"+
|
---|
| 89 | "</node>");
|
---|
| 90 | mnuBar.addMenu(menuObj);
|
---|
| 91 |
|
---|
| 92 | if (online) {
|
---|
| 93 | menuObj = new XML(
|
---|
| 94 | "<node label=\"" + lang.mnuAccount + "\">"+
|
---|
| 95 | "<node label=\"" + lang.mnuInfo + "\"/>"+
|
---|
| 96 | "<node label=\"" + lang.mnuPayment + "\"/>"+
|
---|
| 97 | "<node label=\"" + lang.mnuLicense + "\"/>"+
|
---|
| 98 | "<node label=\"" + lang.mnuLogout + "\"/>"+
|
---|
| 99 | "</node>");
|
---|
| 100 | mnuBar.addMenu(menuObj);
|
---|
| 101 | }
|
---|
| 102 |
|
---|
| 103 | //
|
---|
| 104 | // GET SUBMENUS OF MENUBAR AND HANDLE THEM
|
---|
| 105 | //
|
---|
| 106 | mnuFile = mnuBar.getMenuAt(0);
|
---|
| 107 | mnuEdit = mnuBar.getMenuAt(1);
|
---|
| 108 | mnuSlide = mnuBar.getMenuAt(2);
|
---|
| 109 | mnuOption = mnuBar.getMenuAt(3);
|
---|
| 110 | mnuHelp = mnuBar.getMenuAt(4);
|
---|
| 111 | //if (online) mnuAccount = mnuBar.getMenuAt(5);
|
---|
| 112 | mnuFile.addEventListener("change", onSelectFile);
|
---|
| 113 | mnuEdit.addEventListener("change", onSelectEdit);
|
---|
| 114 | mnuSlide.addEventListener("change", onSelectSlide);
|
---|
| 115 | mnuOption.addEventListener("change", onSelectWindow);
|
---|
| 116 | mnuHelp.addEventListener("change", onSelectHelp);
|
---|
| 117 | //if (online) mnuAccount.addEventListener("change", onSelectAccount);
|
---|
| 118 |
|
---|
| 119 | // hide the Menu Bar
|
---|
| 120 | //mnuBar.visible = false;
|
---|
| 121 | */
|
---|
| 122 |
|
---|
| 123 | //
|
---|
| 124 | // TOOLTIP TEXT OF INTERFACE BUTTONS
|
---|
| 125 | //
|
---|
| 126 | btnNew.tooltipText = lang.mnuNew;
|
---|
| 127 | btnOpen.tooltipText = lang.mnuOpen + "...";
|
---|
| 128 | btnSave.tooltipText = lang.mnuSave;
|
---|
| 129 | btnSaveAs.tooltipText = lang.mnuSaveAs + "...";
|
---|
| 130 | btnUndo.tooltipText = lang.mnuUndo;
|
---|
| 131 | btnRedo.tooltipText = lang.mnuRedo;
|
---|
| 132 | btnSync.tooltipText = lang.mnuSync + "...";
|
---|
| 133 | btnLibrary.tooltipText = lang.mnuLibrary + "...";
|
---|
| 134 | btnPack.tooltipText = lang.mnuPack + "...";
|
---|
| 135 | btnCover.tooltipText = lang.mnuCover + "...";
|
---|
| 136 | btnBackground.tooltipText = lang.mnuBackGround + "...";
|
---|
| 137 | btnLayout.tooltipText = lang.mnuLayout;
|
---|
| 138 | btnPreview.tooltipText = lang.mnuFullScr;
|
---|
| 139 | btnHelp.tooltipText = lang.mnuHelpContent;
|
---|
| 140 | btnSetting.tooltipText = lang.mnuConfig + "...";
|
---|
| 141 |
|
---|
| 142 | btnMoveUp.onRollOver = function() {StartTooltip(lang.mnuMoveUp)};
|
---|
| 143 | btnMoveDown.onRollOver = function() {StartTooltip(lang.mnuMoveDn)};
|
---|
| 144 | btnCutItem.onRollOver = function() {StartTooltip(lang.mnuCut)};
|
---|
| 145 | btnCopyItem.onRollOver = function() {StartTooltip(lang.mnuCopy)};
|
---|
| 146 | btnPasteItem.onRollOver = function() {StartTooltip(lang.mnuPaste)};
|
---|
| 147 | btnAdd.onRollOver = function() {StartTooltip(lang.mnuAdd)};
|
---|
| 148 | btnDetail.onRollOver = function() {StartTooltip(lang.mnuChange)};
|
---|
| 149 | btnDelete.onRollOver = function() {StartTooltip(lang.mnuDelete)};
|
---|
| 150 |
|
---|
| 151 | btnMoveUp.onRollOut = btnMoveUp.onPress = StopTooltip;
|
---|
| 152 | btnMoveDown.onRollOut = btnMoveDown.onPress = StopTooltip;
|
---|
| 153 | btnCutItem.onRollOut = btnCutItem.onPress = StopTooltip;
|
---|
| 154 | btnCopyItem.onRollOut = btnCopyItem.onPress = StopTooltip;
|
---|
| 155 | btnPasteItem.onRollOut = btnPasteItem.onPress = StopTooltip;
|
---|
| 156 | btnAdd.onRollOut = btnAdd.onPress = StopTooltip;
|
---|
| 157 | btnDelete.onRollOut = btnDelete.onPress = StopTooltip;
|
---|
| 158 | btnDetail.onRollOut = btnDetail.onPress = StopTooltip;
|
---|
| 159 | }
|
---|
| 160 |
|
---|
| 161 | ////////////////////////////////////////////////////////////////////////////////
|
---|
| 162 | // HANDLE FUNCTIONS FOR ALL SUBMENUS
|
---|
| 163 | //
|
---|
| 164 | function onSelectFile(itemObj) {
|
---|
| 165 | if( itemObj.menuItem == mnuFile.getItemAt(0) ) btnNew.onRelease();
|
---|
| 166 | if( itemObj.menuItem == mnuFile.getItemAt(1) ) btnOpen.onRelease();
|
---|
| 167 | if( itemObj.menuItem == mnuFile.getItemAt(2) ) btnSave.onRelease();
|
---|
| 168 | if( itemObj.menuItem == mnuFile.getItemAt(3) ) SaveAndExec(undefined, true);
|
---|
| 169 | if( itemObj.menuItem == mnuFile.getItemAt(5) ) btnLibrary.onRelease();
|
---|
| 170 | if( itemObj.menuItem == mnuFile.getItemAt(6) ) btnPack.onRelease();
|
---|
| 171 | if( itemObj.menuItem == mnuFile.getItemAt(8) ) ExitProgram();
|
---|
| 172 | }
|
---|
| 173 |
|
---|
| 174 | btnSaveAs.onRelease = function() {
|
---|
| 175 | SaveAndExec(undefined, true);
|
---|
| 176 | }
|
---|
| 177 |
|
---|
| 178 | function onSelectEdit(itemObj) {
|
---|
| 179 | if( itemObj.menuItem == mnuEdit.getItemAt(0) ) ProcessUndo();
|
---|
| 180 | if( itemObj.menuItem == mnuEdit.getItemAt(1) ) ProcessRedo();
|
---|
| 181 | if( itemObj.menuItem == mnuEdit.getItemAt(3) ) btnCutOnRelease();
|
---|
| 182 | if( itemObj.menuItem == mnuEdit.getItemAt(4) ) btnCopyOnRelease();
|
---|
| 183 | if( itemObj.menuItem == mnuEdit.getItemAt(5) ) btnPasteOnRelease();
|
---|
| 184 | if( itemObj.menuItem == mnuEdit.getItemAt(7) ) btnMoveUp.onRelease();
|
---|
| 185 | if( itemObj.menuItem == mnuEdit.getItemAt(8) ) btnMoveDown.onRelease();
|
---|
| 186 | }
|
---|
| 187 |
|
---|
| 188 | btnUndo.onRelease = function() {
|
---|
| 189 | ProcessUndo();
|
---|
| 190 | }
|
---|
| 191 |
|
---|
| 192 | btnRedo.onRelease = function() {
|
---|
| 193 | ProcessRedo();
|
---|
| 194 | }
|
---|
| 195 |
|
---|
| 196 | function onSelectSlide(itemObj) {
|
---|
| 197 | if(itemObj.menuItem == mnuSlide.getItemAt(0)) btnAdd.onRelease();
|
---|
| 198 | if(itemObj.menuItem == mnuSlide.getItemAt(1)) btnDetail.onRelease();
|
---|
| 199 | if(itemObj.menuItem == mnuSlide.getItemAt(2)) SyncVideoAudio();
|
---|
| 200 | if(itemObj.menuItem == mnuSlide.getItemAt(3)) btnDelete.onRelease();
|
---|
| 201 | if(itemObj.menuItem == mnuSlide.getItemAt(5)) SelectCoverPage();
|
---|
| 202 | if(itemObj.menuItem == mnuSlide.getItemAt(6)) btnLayout.onRelease();
|
---|
| 203 | if(itemObj.menuItem == mnuSlide.getItemAt(7)) SelectBackGround();
|
---|
| 204 | if(itemObj.menuItem == mnuSlide.getItemAt(9)) btnPreview.onRelease();
|
---|
| 205 | }
|
---|
| 206 |
|
---|
| 207 | btnSync.onRelease = function() {
|
---|
| 208 | SyncVideoAudio();
|
---|
| 209 | }
|
---|
| 210 |
|
---|
| 211 | btnCover.onRelease = function() {
|
---|
| 212 | SelectCoverPage();
|
---|
| 213 | }
|
---|
| 214 |
|
---|
| 215 | btnBackground.onRelease = function() {
|
---|
| 216 | SelectBackGround();
|
---|
| 217 | }
|
---|
| 218 |
|
---|
| 219 | function onSelectWindow(itemObj) {
|
---|
| 220 | if (webbase) {
|
---|
| 221 | if(itemObj.menuItem == mnuOption.getItemAt(0)) ResetWindowSize();
|
---|
| 222 | if(itemObj.menuItem == mnuOption.getItemAt(1)) ShowConfigDlg();
|
---|
| 223 | return;
|
---|
| 224 | }
|
---|
| 225 | if(itemObj.menuItem == mnuOption.getItemAt(0)) UpdatePlugin();
|
---|
| 226 | if(itemObj.menuItem == mnuOption.getItemAt(1)) UpdateLayout();
|
---|
| 227 | if(itemObj.menuItem == mnuOption.getItemAt(2)) UpdateCommonLib();
|
---|
| 228 | if(itemObj.menuItem == mnuOption.getItemAt(4).childNodes[0]) RunApplication((isWow64? "UniKey64": "UniKey") + "\\UniKeyNT.exe");
|
---|
| 229 | if(itemObj.menuItem == mnuOption.getItemAt(4).childNodes[1]) RunApplication("TeamViewer\\TeamViewerQS_vi.exe");
|
---|
| 230 | if(itemObj.menuItem == mnuOption.getItemAt(6)) ResetWindowSize();
|
---|
| 231 | if(itemObj.menuItem == mnuOption.getItemAt(7)) ShowConfigDlg();
|
---|
| 232 | }
|
---|
| 233 |
|
---|
| 234 | btnSetting.onRelease = function() {
|
---|
| 235 | ShowConfigDlg();
|
---|
| 236 | }
|
---|
| 237 |
|
---|
| 238 | function onSelectHelp(itemObj) {
|
---|
| 239 | if(itemObj.menuItem == mnuHelp.getItemAt(0)) btnHelp.onRelease();
|
---|
| 240 | if (webbase) {
|
---|
| 241 | if(itemObj.menuItem == mnuHelp.getItemAt(2)) AboutProgram();
|
---|
| 242 | return;
|
---|
| 243 | }
|
---|
| 244 | if(itemObj.menuItem == mnuHelp.getItemAt(1)) AutoUpgrade();
|
---|
| 245 | if(itemObj.menuItem == mnuHelp.getItemAt(3)) AboutProgram();
|
---|
| 246 | }
|
---|
| 247 |
|
---|
| 248 | function onSelectAccount(itemObj) {
|
---|
| 249 | if(itemObj.menuItem == mnuAccount.getItemAt(0)) EditAccountInfo();
|
---|
| 250 | if(itemObj.menuItem == mnuAccount.getItemAt(1)) ManageCastAccount();
|
---|
| 251 | if(itemObj.menuItem == mnuAccount.getItemAt(2)) ShowVioletLicense();
|
---|
| 252 | if(itemObj.menuItem == mnuAccount.getItemAt(3)) LogoutViolet();
|
---|
| 253 | }
|
---|
| 254 |
|
---|
| 255 | ////////////////////////////////////////////////////////////////////////////////
|
---|
| 256 | // COMMON FUNCTIONS
|
---|
| 257 | //
|
---|
| 258 | function StartTooltip(tooltipText) {
|
---|
| 259 | if( !movTimer && tooltipText ) {
|
---|
| 260 | createEmptyMovieClip("movTimer", 1);
|
---|
| 261 | movTimer.counter = 0;
|
---|
| 262 |
|
---|
| 263 | movTimer.onEnterFrame = function() {
|
---|
| 264 | this.counter++;
|
---|
| 265 | if( this.counter == 10) {
|
---|
| 266 | if(!txtTooltip) createTextField("txtTooltip", 2, _xmouse+16, _ymouse+16, 0, 0);
|
---|
| 267 | txtTooltip.text = tooltipText;
|
---|
| 268 | txtTooltip.autoSize = true;
|
---|
| 269 | txtTooltip.border = true;
|
---|
| 270 | txtTooltip.background = true;
|
---|
| 271 | txtTooltip.backgroundColor = 0xFFFFCC;
|
---|
| 272 |
|
---|
| 273 | var newFormat = new TextFormat();
|
---|
| 274 | newFormat.font = "Arial";
|
---|
| 275 | newFormat.size = 12;
|
---|
| 276 | txtTooltip.setTextFormat(newFormat);
|
---|
| 277 | delete newFormat;
|
---|
| 278 |
|
---|
| 279 | if( txtTooltip._x + txtTooltip._width > 800 ) txtTooltip._x = 800 - txtTooltip._width;
|
---|
| 280 | }
|
---|
| 281 | if( this.counter == 130) StopTooltip();
|
---|
| 282 | }
|
---|
| 283 | }
|
---|
| 284 | }
|
---|
| 285 |
|
---|
| 286 | function StopTooltip() {
|
---|
| 287 | if( txtTooltip ) txtTooltip.removeTextField();
|
---|
| 288 | if( movTimer ) movTimer.removeMovieClip();
|
---|
| 289 | }
|
---|
| 290 |
|
---|
| 291 | function ShowGrayScreen(show) {
|
---|
| 292 | if( show==undefined ) show = true;
|
---|
| 293 | btnSemitrans.count += (show? 1: -1);
|
---|
| 294 | show = (btnSemitrans.count > 0);
|
---|
| 295 | btnSemitrans._visible = show;
|
---|
| 296 | fscommand("Enable Drop", !show);
|
---|
| 297 | }
|
---|
| 298 |
|
---|
| 299 | function ShowDialog(frameLabel, winTitle) {
|
---|
| 300 | if (!wndDialog.content.loaded) return;
|
---|
| 301 | if (!wndDialog._visible) ShowGrayScreen();
|
---|
| 302 | wndDialog.content.gotoAndStop(frameLabel);
|
---|
| 303 | wndDialog.title = winTitle;
|
---|
| 304 | wndDialog.setSize(wndDialog.content._width+6, wndDialog.content._height+34);
|
---|
| 305 | wndDialog._x = 400 - wndDialog._width/2;
|
---|
| 306 | wndDialog._y = 290 - wndDialog._height/2;
|
---|
| 307 | wndDialog._visible = true;
|
---|
| 308 | }
|
---|
| 309 |
|
---|
| 310 | function ShowMessage(message, title, showMessageCallBack, showMessageObj)
|
---|
| 311 | {
|
---|
| 312 | messageShowing = true;
|
---|
| 313 | ShowGrayScreen();
|
---|
| 314 | Alert.buttonWidth = 60;
|
---|
| 315 | Alert.okLabel = lang.btnOK;
|
---|
| 316 | Alert.show(
|
---|
| 317 | message, title, Alert.OK, _root,
|
---|
| 318 | function(evt) {
|
---|
| 319 | messageShowing = false;
|
---|
| 320 | ShowGrayScreen(false);
|
---|
| 321 | if (showMessageCallBack!=undefined)
|
---|
| 322 | showMessageCallBack.call(showMessageObj);
|
---|
| 323 | },
|
---|
| 324 | null, Alert.OK );
|
---|
| 325 | }
|
---|
| 326 |
|
---|
| 327 | function ShowQuestion(message, caption, cancel, yesFunction, noFunction) {
|
---|
| 328 | messageShowing = true;
|
---|
| 329 | ShowGrayScreen();
|
---|
| 330 | Alert.buttonWidth = 60;
|
---|
| 331 | Alert.yesLabel = lang.btnYes;
|
---|
| 332 | Alert.noLabel = lang.btnNo;
|
---|
| 333 | Alert.cancelLabel = cancel;
|
---|
| 334 |
|
---|
| 335 | var msgButtons = Alert.YES | Alert.NO;
|
---|
| 336 | if( cancel!="" ) msgButtons |= Alert.CANCEL;
|
---|
| 337 |
|
---|
| 338 | Alert.show(
|
---|
| 339 | message, caption, msgButtons, _root,
|
---|
| 340 | function(evt) {
|
---|
| 341 | messageShowing = false;
|
---|
| 342 | ShowGrayScreen(false);
|
---|
| 343 | if( evt.detail==Alert.YES) yesFunction();
|
---|
| 344 | if( evt.detail==Alert.NO ) noFunction();
|
---|
| 345 | },
|
---|
| 346 | "Question Movie", Alert.YES
|
---|
| 347 | );
|
---|
| 348 | }
|
---|
| 349 |
|
---|
| 350 | function LoadPopupMovie(title, filename, onClickOK, onClickCancel, parentObj, languagePath) {
|
---|
| 351 | if (languagePath != undefined) {
|
---|
| 352 | plang = lang.createEmptyMovieClip("popup", lang.getNextHighestDepth());
|
---|
| 353 | loadVariables(appPath + languagePath + slash + language + ".txt", lang.popup);
|
---|
| 354 | lang.popup.onData = function() {
|
---|
| 355 | LoadPopupMovie(title, filename, onClickOK, onClickCancel, parentObj);
|
---|
| 356 | };
|
---|
| 357 | return;
|
---|
| 358 | }
|
---|
| 359 | var frame = "";
|
---|
| 360 | if (filename.indexOf("|") != -1) {
|
---|
| 361 | var a = filename.split("|");
|
---|
| 362 | filename = a[0];
|
---|
| 363 | frame = a[1];
|
---|
| 364 | }
|
---|
| 365 | var initObj = {title: title, contentPath: _root.appPath + filename, closeButton: true};
|
---|
| 366 | var mcPopup = mx.managers.PopUpManager.createPopUp(_root, mx.containers.Window, true, initObj);
|
---|
| 367 | var oldPressEnter = _root.onPressEnter;
|
---|
| 368 | var oldPressEsc = _root.onPressEsc;
|
---|
| 369 | var oldPressDelete = _root.oldPressDelete;
|
---|
| 370 | _root.onPressEnter = undefined;
|
---|
| 371 | _root.onPressEsc = undefined;
|
---|
| 372 | _root.oldPressDelete= undefined;
|
---|
| 373 | parentObj.SetBehindDialog(true);
|
---|
| 374 | mcPopup._visible = false;
|
---|
| 375 |
|
---|
| 376 | mcPopup.onCloseDialog = function() {
|
---|
| 377 | mcPopup.deletePopUp();
|
---|
| 378 | lang.popup.removeMovieClip();
|
---|
| 379 | _root.onPressEnter = oldPressEnter;
|
---|
| 380 | _root.onPressEsc = oldPressEsc;
|
---|
| 381 | _root.oldPressDelete = oldPressDelete;
|
---|
| 382 | parentObj.SetBehindDialog(false);
|
---|
| 383 | onClickCancel();
|
---|
| 384 | };
|
---|
| 385 | mcPopup.onFinishInput = function(retVal) {
|
---|
| 386 | mcPopup.onCloseDialog();
|
---|
| 387 | onClickOK(retVal);
|
---|
| 388 | };
|
---|
| 389 | mcPopup.setDlgSize = function() {
|
---|
| 390 | var movie = mcPopup.content;
|
---|
| 391 | var size = movie.getMovieSize? movie.getMovieSize(): {width: movie._width, height: movie._height};
|
---|
| 392 | mcPopup.setSize(size.width + 6, size.height + 34);
|
---|
| 393 | mcPopup._x = 400 - mcPopup.width/2;
|
---|
| 394 | mcPopup._y = 290 - mcPopup.height/2;
|
---|
| 395 | mcPopup._visible = true;
|
---|
| 396 | }
|
---|
| 397 | mcPopup.addEventListener("complete", function() {if (frame!="") mcPopup.content.gotoAndStop(frame); mcPopup.setDlgSize()});
|
---|
| 398 | mcPopup.addEventListener("click", function() {if (onClickCancel!==false) mcPopup.onCloseDialog()});
|
---|
| 399 |
|
---|
| 400 | return mcPopup;
|
---|
| 401 | }
|
---|
| 402 |
|
---|
| 403 | function ClearAllData() {
|
---|
| 404 | movScene.ClearBackGround();
|
---|
| 405 | while (movScene.bkgnd_node.childNodes.length > 0) movScene.bkgnd_node.lastChild.removeNode();
|
---|
| 406 | while (treItem.length > 0) treItem.removeItemAt(0);
|
---|
| 407 | currentFile = "";
|
---|
| 408 | dataChanged = "false";
|
---|
| 409 | undoData.splice(0);
|
---|
| 410 | undoPos = 0;
|
---|
| 411 | GetRelatedFiles();
|
---|
| 412 | }
|
---|
| 413 |
|
---|
| 414 | function ExecWithConfirmSave(execFunction)
|
---|
| 415 | {
|
---|
| 416 | if( dataChanged == "true" ) {
|
---|
| 417 | ShowQuestion(
|
---|
| 418 | lang.msgConfirmSave, lang.msgTitle, lang.btnContinue,
|
---|
| 419 | function() { SaveAndExec(execFunction) },
|
---|
| 420 | execFunction
|
---|
| 421 | );
|
---|
| 422 | } else {
|
---|
| 423 | execFunction();
|
---|
| 424 | }
|
---|
| 425 | }
|
---|
| 426 |
|
---|
| 427 | function ChangeTempPath(tmpPathName) {
|
---|
| 428 | var pos = tempPath.length;
|
---|
| 429 | var tmp = GetFullFileName(tmpPathName);
|
---|
| 430 | if( tmp.substr(0, pos) == tempPath )
|
---|
| 431 | return defaultFilePath + tmp.substr(pos);
|
---|
| 432 | return tmpPathName;
|
---|
| 433 | }
|
---|
| 434 |
|
---|
| 435 | function EncodeXml(s)
|
---|
| 436 | {
|
---|
| 437 | s = Replace(s, '&', "&");
|
---|
| 438 | s = Replace(s, '"', """);
|
---|
| 439 | s = Replace(s, '<', "<");
|
---|
| 440 | s = Replace(s, '>', ">");
|
---|
| 441 | return escape(s);
|
---|
| 442 | }
|
---|
| 443 |
|
---|
| 444 | function SaveAndExec(execFunction, isSaveAs)
|
---|
| 445 | {
|
---|
| 446 | if( currentFile == "" || isSaveAs ) {
|
---|
| 447 | if (online) {
|
---|
| 448 | ShowGrayScreen();
|
---|
| 449 | var pop = LoadPopupMovie(lang.mnuSaveAs, "Popup" + slash + "Space.swf",
|
---|
| 450 | function(param) {SaveToFile(execFunction, param)},
|
---|
| 451 | function() {ShowGrayScreen(false)});
|
---|
| 452 | pop.defExt = "xvl";
|
---|
| 453 | pop.filter = ["xvl"];
|
---|
| 454 | return;
|
---|
| 455 | }
|
---|
| 456 | fscommand("Save As", "");
|
---|
| 457 | ShowGrayScreen();
|
---|
| 458 | command = "";
|
---|
| 459 | onEnterFrame = function() {
|
---|
| 460 | if( command == "" ) return;
|
---|
| 461 | ShowGrayScreen(false);
|
---|
| 462 | if( command == "Save As OK" ) {
|
---|
| 463 | GetDataChangePath(GetFullFileName, dataXML.firstChild);
|
---|
| 464 | currentFile = savedFileName;
|
---|
| 465 | GetDataChangePath(GetRelativeFileName, dataXML.firstChild);
|
---|
| 466 | SaveToFile(execFunction, true);
|
---|
| 467 | fscommand("Set Title", currentFile);
|
---|
| 468 | }
|
---|
| 469 | else {
|
---|
| 470 | onEnterFrame = WaitForAppCommand;
|
---|
| 471 | command = "";
|
---|
| 472 | }
|
---|
| 473 | }
|
---|
| 474 | return;
|
---|
| 475 | }
|
---|
| 476 | SaveToFile(execFunction);
|
---|
| 477 | }
|
---|
| 478 |
|
---|
| 479 | function SaveToFile(execFunction, param) {
|
---|
| 480 | var isFirstSave = (param != undefined);
|
---|
| 481 | if( isFirstSave ) {
|
---|
| 482 | var pos1 = currentFile.lastIndexOf(slash) + 1;
|
---|
| 483 | var pos2 = currentFile.lastIndexOf(".");
|
---|
| 484 | defaultFilePath = currentFile.substring(pos1, pos2) + " files" + slash;
|
---|
| 485 | GetDataChangePath(ChangeTempPath, dataXML.firstChild);
|
---|
| 486 | filesForRetrieve = fileList;
|
---|
| 487 | GetRelatedFiles();
|
---|
| 488 | }
|
---|
| 489 |
|
---|
| 490 | ascData = new XML(dataXML.toString());
|
---|
| 491 | if (movScene.bkgnd_node.childNodes.length > 0)
|
---|
| 492 | if( !ascData.firstChild.firstChild ) ascData.firstChild.appendChild(movScene.bkgnd_node.cloneNode(true));
|
---|
| 493 | else ascData.firstChild.insertBefore(movScene.bkgnd_node.cloneNode(true), ascData.firstChild.firstChild);
|
---|
| 494 |
|
---|
| 495 | if( online ) {
|
---|
| 496 | var xml:XML = new XML();
|
---|
| 497 | xml.ignoreWhite = true;
|
---|
| 498 | xml.onLoad = function(success) {
|
---|
| 499 | if (!checkSuccess(success, "errServerConnect", "Không thể kết nối tới server.")) return;
|
---|
| 500 | var attr = this.firstChild.attributes;
|
---|
| 501 | if (!checkSuccess(attr.err=="", attr.errCode, attr.err)) return;
|
---|
| 502 | currentFile = attr.id;
|
---|
| 503 | fscommand("Set Title", attr.name);
|
---|
| 504 | dataChanged = "false";
|
---|
| 505 | execFunction();
|
---|
| 506 | }
|
---|
| 507 | var request = spaceUrl + "save";
|
---|
| 508 | if (isFirstSave) request += "?userid="+param.userid + "&dir="+param.dir + "&name="+param.name;
|
---|
| 509 | else request += "?fileid="+currentFile;
|
---|
| 510 | ascData.sendAndLoad(request, xml);
|
---|
| 511 | return;
|
---|
| 512 | }
|
---|
| 513 |
|
---|
| 514 | UnicodeAscii(EncodeXml, ascData.firstChild);
|
---|
| 515 | ascData = defXmlDecl + GetAlignedXml(ascData, 0);
|
---|
| 516 |
|
---|
| 517 | fscommand("Save", "");
|
---|
| 518 | command = "";
|
---|
| 519 | onEnterFrame = function() {
|
---|
| 520 | if( command == "" ) return;
|
---|
| 521 | onEnterFrame = WaitForAppCommand;
|
---|
| 522 | if( command == "Save OK" ) execFunction();
|
---|
| 523 | if( command == "Save Error" ) ShowMessage(lang.msgSaveError, lang.msgTitle1);
|
---|
| 524 | if( isFirstSave ) fscommand("Retrieve", "");
|
---|
| 525 | else fscommand("Cleanup", "");
|
---|
| 526 | delete ascData;
|
---|
| 527 | command = "";
|
---|
| 528 | }
|
---|
| 529 | }
|
---|
| 530 |
|
---|
| 531 | ////////////////////////////////////////////////////////////////////////////////
|
---|
| 532 | // MENU FILE FUNCTIONS
|
---|
| 533 | //
|
---|
| 534 | btnNew.onRelease = function() {
|
---|
| 535 | ExecWithConfirmSave(CreateNewData);
|
---|
| 536 | }
|
---|
| 537 |
|
---|
| 538 | function InitializeDataXML() {
|
---|
| 539 | var lectureNode = commonXML.createElement("LECTURE_INFO");
|
---|
| 540 | if( appUserName ) {
|
---|
| 541 | lectureNode.attributes.Info = unescape(appUserName) + " - " + unescape(appAddress);
|
---|
| 542 | lectureNode.attributes.Check = lectureNode.attributes.Info.length + 13;
|
---|
| 543 | }
|
---|
| 544 | lectureNode.attributes.CommonDir = commonDir;
|
---|
| 545 | lectureNode.attributes.Layout = "Layout1.swf";
|
---|
| 546 | lectureNode.attributes.Title = "";
|
---|
| 547 | lectureNode.attributes.Version = version;
|
---|
| 548 | dataXML.appendChild(lectureNode);
|
---|
| 549 | }
|
---|
| 550 |
|
---|
| 551 | function CreateNewData() {
|
---|
| 552 | ClearAllData();
|
---|
| 553 | InitializeDataXML();
|
---|
| 554 | movScene.onLoadXMLData();
|
---|
| 555 | fscommand("Set Title", "");
|
---|
| 556 | }
|
---|
| 557 |
|
---|
| 558 | btnOpen.onRelease = function() {
|
---|
| 559 | ExecWithConfirmSave(
|
---|
| 560 | function() {
|
---|
| 561 | if (online) {
|
---|
| 562 | ShowGrayScreen();
|
---|
| 563 | var pop = LoadPopupMovie(lang.mnuOpen, "Popup" + slash + "Space.swf",
|
---|
| 564 | function(param) {
|
---|
| 565 | ClearAllData();
|
---|
[698] | 566 |
|
---|
[297] | 567 | currentFile = param.id;
|
---|
| 568 | fscommand("Set Title", param.name);
|
---|
| 569 | LoadXMLData(spaceUrl + "file?id="+param.id+"&userid="+param.userid);
|
---|
| 570 | },
|
---|
| 571 | function() {ShowGrayScreen(false)});
|
---|
| 572 | pop.defExt = "xvl";
|
---|
| 573 | pop.filter = ["xvl"];
|
---|
| 574 | return;
|
---|
| 575 | }
|
---|
| 576 | command = "";
|
---|
| 577 | openedFileName = "";
|
---|
| 578 | fscommand("Open", "");
|
---|
| 579 | ShowGrayScreen();
|
---|
| 580 |
|
---|
| 581 | onEnterFrame = function() {
|
---|
| 582 | if( command == "" ) return;
|
---|
| 583 | ShowGrayScreen(false);
|
---|
| 584 | if( command == "Open OK" ) OpenNewFile();
|
---|
| 585 | onEnterFrame = WaitForAppCommand;
|
---|
| 586 | command = "";
|
---|
| 587 | }
|
---|
| 588 | });
|
---|
| 589 | }
|
---|
| 590 |
|
---|
[698] | 591 | // open from Violet Space (using HMTL/javascript to display folders & files)
|
---|
| 592 | // when user clicked a file in Violet Space, a new window (which contains the lecture editor client) will be opened; ID of the selected lecture will be passed via flashvar
|
---|
| 593 | function OpenFileById() {
|
---|
| 594 | clearInterval(_root.openFileInterval);
|
---|
| 595 |
|
---|
| 596 | if (fileId == undefined) return;
|
---|
| 597 | if (fileId == "") return;
|
---|
| 598 |
|
---|
| 599 | //ShowGrayScreen();
|
---|
| 600 | ClearAllData();
|
---|
| 601 | currentFile = fileId;
|
---|
| 602 | LoadXMLData(spaceUrl + "file?id="+fileId+"&userid="+userId);
|
---|
| 603 | }
|
---|
| 604 |
|
---|
[297] | 605 | function OpenNewFile() {
|
---|
| 606 | ClearAllData();
|
---|
| 607 | currentFile = openedFileName;
|
---|
| 608 | fscommand("Set Title", currentFile);
|
---|
| 609 | LoadXMLData(currentFile);
|
---|
| 610 | }
|
---|
| 611 |
|
---|
| 612 | btnSave.onRelease = function() {
|
---|
| 613 | SaveAndExec();
|
---|
| 614 | }
|
---|
| 615 |
|
---|
| 616 | btnLibrary.onRelease = function() {
|
---|
| 617 | ShowGrayScreen();
|
---|
| 618 | var pop = LoadPopupMovie(lang.mnuLibrary, "Popup" + slash + "Library.swf",
|
---|
| 619 | function(filename) {
|
---|
| 620 | ClearAllData();
|
---|
| 621 | openedFileName = filename;
|
---|
| 622 | LoadXMLData(filename);
|
---|
| 623 | },
|
---|
| 624 | function() {ShowGrayScreen(false)});
|
---|
| 625 | pop.libPaths = _root.lecturePaths;
|
---|
| 626 | pop.remember = true;
|
---|
| 627 | pop.okTitle = lang.mnuOpen;
|
---|
| 628 | }
|
---|
| 629 |
|
---|
| 630 | btnPack.onRelease = function() {
|
---|
| 631 | GetRelatedFiles(true);
|
---|
| 632 |
|
---|
| 633 | var slashPos = currentFile.lastIndexOf(slash);
|
---|
| 634 | if( !online && currentFile.substr(slashPos + 1) == "Scenario.xvl" ) {
|
---|
| 635 | ShowQuestion(lang.msgHasPacked, lang.msgTitle4, lang.btnCancel,
|
---|
| 636 | function() {
|
---|
| 637 | oldpackType = packageType;
|
---|
| 638 | packageType = 0;
|
---|
| 639 | packagePath = currentFile.substring(0, slashPos)
|
---|
| 640 | CreatePackage("Overwrite");
|
---|
| 641 | dataChanged = "false";
|
---|
| 642 | },
|
---|
| 643 | function() {
|
---|
| 644 | ShowDialog("Pack", lang.mnuPack);
|
---|
| 645 | });
|
---|
| 646 | return;
|
---|
| 647 | }
|
---|
| 648 |
|
---|
| 649 | ShowDialog("Pack", lang.mnuPack);
|
---|
| 650 | }
|
---|
| 651 |
|
---|
| 652 | function CreatePackage(status, paid) {
|
---|
| 653 | if (online && (isNaN(userLevel) || userLevel < 1) && !paid) {
|
---|
| 654 | ShowGrayScreen();
|
---|
| 655 | LoadPopupMovie("lang.dlgLicenseTitle", "Popup" + slash + "UserManager.swf|Package",
|
---|
| 656 | function() {CreatePackage(status, true)},
|
---|
| 657 | function() {ShowGrayScreen(false)},
|
---|
| 658 | null, "Language" + slash + "User");
|
---|
| 659 | return;
|
---|
| 660 | }
|
---|
| 661 | if( webbase ) {
|
---|
| 662 | treItem.enabled = false;
|
---|
| 663 | xml = new XML();
|
---|
| 664 | xml.onLoad = function() {
|
---|
| 665 | treItem.enabled = true;
|
---|
| 666 | var param = "userid=" + userId;
|
---|
| 667 | param += "&name=" + escape(packagePath);
|
---|
| 668 | param += "&id=" + this.firstChild.attributes.id;
|
---|
| 669 | getUrl(rootPath + "Service/packdownload.php?" + param);
|
---|
| 670 | }
|
---|
| 671 | var lv:LoadVars = new LoadVars();
|
---|
| 672 | lv.userid = userId;
|
---|
| 673 | lv.name = packagePath;
|
---|
| 674 | lv.type = packageType;
|
---|
| 675 | lv.dataNum = dataFileNum;
|
---|
| 676 | lv.commonNum = commonFileNum;
|
---|
| 677 | lv.fileList = fileListStr.split("|").join(",");
|
---|
| 678 | if (packageType == 1) lv.packagePlayer = packagePlayer;
|
---|
| 679 | if (packageType == 3) {
|
---|
| 680 | lv.scormVersion = scormVersion;
|
---|
| 681 | lv.scormTitle = packXML.firstChild.attributes.Title;
|
---|
| 682 | lv.scormOrgData = GetAlignedXml(CreateOrganization(packXML), 3);
|
---|
| 683 | }
|
---|
| 684 | lv.dataXml = defXmlDecl + GetAlignedXml(packXML, 0);
|
---|
| 685 | lv.sendAndLoad(rootPath + "Service/package.php", xml);
|
---|
| 686 | return;
|
---|
| 687 | }
|
---|
| 688 |
|
---|
| 689 | if( status==undefined ) status = "";
|
---|
| 690 | SwitchCurrentVideo(movScene.currMovie, "close");
|
---|
| 691 | treItem.enabled = false;
|
---|
| 692 |
|
---|
| 693 | ascData = new XML(packXML.toString());
|
---|
| 694 | UnicodeAscii(EncodeXml, ascData.firstChild);
|
---|
| 695 | if( packageType == 3 ) {
|
---|
| 696 | scormTitle = ascData.firstChild.attributes.Title;
|
---|
| 697 | scormOrgData = GetAlignedXml(CreateOrganization(ascData), 3);
|
---|
| 698 | }
|
---|
| 699 | ascData = defXmlDecl + GetAlignedXml(ascData, 0);
|
---|
| 700 |
|
---|
| 701 | fscommand("Pack", status);
|
---|
| 702 | command = "";
|
---|
| 703 |
|
---|
| 704 | onEnterFrame = function() {
|
---|
| 705 | if( command == "" ) return;
|
---|
| 706 | if( command == "Create Error" ) {
|
---|
| 707 | ShowMessage(lang.msgDirError, lang.msgTitle1);
|
---|
| 708 | }
|
---|
| 709 | if( command == "Copy Error" || command == "Save Error" ) {
|
---|
| 710 | ShowMessage(lang.msgPackError + copiedFile + "\r\r ", lang.msgTitle1);
|
---|
| 711 | }
|
---|
| 712 | if( command == "Dir Existed" ) {
|
---|
| 713 | ShowQuestion(
|
---|
| 714 | lang.msgPackOver, lang.msgTitle, lang.btnCancel,
|
---|
| 715 | function() { CreatePackage("Overwrite", paid) },
|
---|
| 716 | function() { CreatePackage("Merge", paid) }
|
---|
| 717 | );
|
---|
| 718 | }
|
---|
| 719 | SwitchCurrentVideo(movScene.currMovie, "replay");
|
---|
| 720 | treItem.enabled = true;
|
---|
| 721 |
|
---|
| 722 | if( packageType == 0 ) packageType = oldpackType;
|
---|
| 723 | onEnterFrame = WaitForAppCommand;
|
---|
| 724 | delete ascData;
|
---|
| 725 | command = "";
|
---|
| 726 | }
|
---|
| 727 | }
|
---|
| 728 |
|
---|
| 729 | function ExitProgram()
|
---|
| 730 | {
|
---|
| 731 | if (online) {
|
---|
| 732 | var lv:LoadVars = new LoadVars();
|
---|
| 733 | lv.send(userUrl + "logout");
|
---|
| 734 | }
|
---|
| 735 | ExecWithConfirmSave(
|
---|
| 736 | function() {
|
---|
| 737 | SaveConfig();
|
---|
| 738 | fscommand("Quit", "");
|
---|
| 739 | });
|
---|
| 740 | }
|
---|
| 741 |
|
---|
| 742 | ////////////////////////////////////////////////////////////////////////////////
|
---|
| 743 | // MENU EDIT FUNCTIONS
|
---|
| 744 | //
|
---|
| 745 | function UpdateUndoData() {
|
---|
| 746 | undoData.splice(undoPos);
|
---|
| 747 | if(undoData.length >= maxUndo) undoData.shift();
|
---|
| 748 | var node = dataXML.firstChild.cloneNode(true);
|
---|
| 749 | node.attributes.selectedIndex = treItem.selectedIndex;
|
---|
| 750 | undoData.push(node);
|
---|
| 751 | undoPos = undoData.length;
|
---|
| 752 | dataChanged = "true";
|
---|
| 753 | }
|
---|
| 754 |
|
---|
| 755 | function RestoreFromUndoData() {
|
---|
| 756 | while (treItem.length > 0) treItem.removeItemAt(0);
|
---|
| 757 | var layout = dataXML.firstChild.attributes.Layout;
|
---|
| 758 | var title = dataXML.firstChild.attributes.Title;
|
---|
| 759 | dataXML.firstChild.removeNode();
|
---|
| 760 | dataXML.appendChild(undoData[undoPos].cloneNode(true));
|
---|
| 761 | UpdateScreen(true);
|
---|
| 762 | treItem.selectedIndex = dataXML.firstChild.attributes.selectedIndex;
|
---|
| 763 | delete dataXML.firstChild.attributes.selectedIndex;
|
---|
| 764 |
|
---|
| 765 | if( layout != dataXML.firstChild.attributes.Layout ||
|
---|
| 766 | title != dataXML.firstChild.attributes.Title )
|
---|
| 767 | {
|
---|
| 768 | movScene.currentItem = treItem.selectedNode.attributes.item;
|
---|
| 769 | movScene.currentSection = treItem.selectedNode.attributes.section;
|
---|
| 770 | movScene.UpdateTemplate();
|
---|
| 771 | } else {
|
---|
| 772 | onChangeHandle();
|
---|
| 773 | }
|
---|
| 774 | }
|
---|
| 775 |
|
---|
| 776 | function ProcessUndo() {
|
---|
| 777 | if( undoPos == 0 ) return;
|
---|
| 778 | if( undoPos == undoData.length ) {UpdateUndoData(); undoPos--;}
|
---|
| 779 | undoPos--;
|
---|
| 780 | RestoreFromUndoData();
|
---|
| 781 | }
|
---|
| 782 |
|
---|
| 783 | function ProcessRedo() {
|
---|
| 784 | if( undoPos == undoData.length ) return;
|
---|
| 785 | undoPos++;
|
---|
| 786 | RestoreFromUndoData();
|
---|
| 787 | if( undoPos == undoData.length - 1 ) undoData.pop();
|
---|
| 788 | }
|
---|
| 789 |
|
---|
| 790 | btnCutItem.onRelease = btnCutOnRelease = function() {
|
---|
| 791 | CopyToClipboard(DeleteItem);
|
---|
| 792 | }
|
---|
| 793 |
|
---|
| 794 | btnCopyItem.onRelease = btnCopyOnRelease = function() {
|
---|
| 795 | CopyToClipboard();
|
---|
| 796 | }
|
---|
| 797 |
|
---|
| 798 | function GetElementChangePath(change, node) {
|
---|
| 799 | if( node.attributes.hyperlink.charAt(0) == "1" ) {
|
---|
| 800 | node.attributes.hyperlink = "1|" + change(node.attributes.hyperlink.substr(2));
|
---|
| 801 | }
|
---|
| 802 | if( node.nodeName == "IMAGE" || node.nodeName == "MEDIA" ) {
|
---|
| 803 | node.attributes.url = change(node.attributes.url);
|
---|
| 804 | }
|
---|
| 805 | if( node.nodeName == "PLUGIN" ) {
|
---|
| 806 | ChangeXMLFileInfo(node.firstChild, change, pluXML.childNodes[1].childNodes[1].attributes[node.firstChild.nodeName]);
|
---|
| 807 | var subNodes = node.firstChild.childNodes;
|
---|
| 808 | for( var i=0; i<subNodes.length; i++ )
|
---|
| 809 | if( subNodes[i].attributes.hyperlink.charAt(0) == "1" )
|
---|
| 810 | subNodes[i].attributes.hyperlink = "1|" + change(subNodes[i].attributes.hyperlink.substr(2));
|
---|
| 811 | var langAttr = node.childNodes[1].firstChild.attributes;
|
---|
| 812 | for (var a in langAttr) if (a.substr(0, 5)=="file_") langAttr[a] = change(langAttr[a]);
|
---|
| 813 | }
|
---|
| 814 | }
|
---|
| 815 |
|
---|
| 816 | function GetNodeChangePath(change, itemData) {
|
---|
| 817 | for( var k=0; k<itemData.childNodes.length; k++ ) {
|
---|
| 818 | var node = itemData.childNodes[k];
|
---|
| 819 | GetElementChangePath(change, node);
|
---|
| 820 | }
|
---|
| 821 | }
|
---|
| 822 |
|
---|
| 823 | function GetDataChangePath(change, itemData) {
|
---|
| 824 | if( itemData.nodeName == "LECTURE_INFO" ) ChangeLayoutFileParam(itemData, change);
|
---|
| 825 | if( itemData.nodeName == "LECTURE_INFO" || itemData.nodeName == "SECTION_INFO" || itemData.nodeName == "BACKGROUND_INFO" )
|
---|
| 826 | for( var i = 0; i < itemData.childNodes.length; i++ )
|
---|
| 827 | GetDataChangePath(change, itemData.childNodes[i]);
|
---|
| 828 | else
|
---|
| 829 | GetNodeChangePath(change, itemData);
|
---|
| 830 | }
|
---|
| 831 |
|
---|
| 832 | function CopyToClipboard(execFunction) {
|
---|
| 833 | if( treItem.length == 0 ) return;
|
---|
| 834 |
|
---|
| 835 | var section = treItem.selectedNode.attributes.section-1;
|
---|
| 836 | var item = treItem.selectedNode.attributes.item-1;
|
---|
| 837 | var itemData = (item>=0) ?
|
---|
| 838 | dataXML.firstChild.childNodes[section].childNodes[item] :
|
---|
| 839 | dataXML.firstChild.childNodes[section];
|
---|
| 840 |
|
---|
| 841 | var copiedData = itemData.cloneNode(true);
|
---|
| 842 | GetDataChangePath(GetFullFileName, copiedData);
|
---|
| 843 |
|
---|
| 844 | command = "";
|
---|
| 845 | ascData = new XML(copiedData.toString());
|
---|
| 846 | UnicodeAscii(escape, ascData);
|
---|
| 847 | fscommand("Set Clipboard", dataID + ascData.toString());
|
---|
| 848 | onEnterFrame = function() {
|
---|
| 849 | if( command == "" ) return;
|
---|
| 850 | if( command == "Set OK" ) execFunction();
|
---|
| 851 | onEnterFrame = WaitForAppCommand;
|
---|
| 852 | delete ascData;
|
---|
| 853 | command = "";
|
---|
| 854 | }
|
---|
| 855 | }
|
---|
| 856 |
|
---|
| 857 | btnPasteItem.onRelease = btnPasteOnRelease = function() {
|
---|
| 858 | command = "";
|
---|
| 859 | clipboardData = "";
|
---|
| 860 | fscommand("Get Clipboard");
|
---|
| 861 |
|
---|
| 862 | onEnterFrame = function() {
|
---|
| 863 | if( command == "" ) return;
|
---|
| 864 | if( command == "Get Text" ) {
|
---|
| 865 | if( clipboardData.substr(0, dataID.length) == dataID ) {
|
---|
| 866 | var xmlClipboard = new XML(clipboardData.substr(dataID.length));
|
---|
| 867 | var itemData = xmlClipboard.firstChild;
|
---|
| 868 | UnicodeAscii(unescape, itemData);
|
---|
| 869 | GetDataChangePath(GetRelativeFileName, itemData);
|
---|
| 870 |
|
---|
| 871 | var section = treItem.selectedItem.attributes.section;
|
---|
| 872 | if( itemData.nodeName == "SECTION_INFO" ) AddSectionData(itemData);
|
---|
| 873 | else if( section != undefined) AddItemData(section - 1, itemData);
|
---|
| 874 | }
|
---|
| 875 | }
|
---|
| 876 | onEnterFrame = WaitForAppCommand;
|
---|
| 877 | command = "";
|
---|
| 878 | }
|
---|
| 879 | }
|
---|
| 880 |
|
---|
| 881 | ////////////////////////////////////////////////////////////////////////////////
|
---|
| 882 | // MENU CONTENT FUNCTIONS
|
---|
| 883 | //
|
---|
| 884 | btnAdd.onRelease = function() {
|
---|
| 885 | isChanging = false;
|
---|
| 886 | inputingCover = false;
|
---|
| 887 | ShowDialog("Item", lang.dlgItem);
|
---|
| 888 | }
|
---|
| 889 |
|
---|
| 890 | btnDetail.onRelease = function() {
|
---|
| 891 | if( treItem.length == 0 ) return;
|
---|
| 892 | treCurrentNode = treItem.selectedNode;
|
---|
| 893 | var section = treItem.selectedNode.attributes.section-1;
|
---|
| 894 |
|
---|
| 895 | var item = treItem.selectedNode.attributes.item-1;
|
---|
| 896 | if(item>=0) changingNode = dataXML.firstChild.childNodes[section].childNodes[item];
|
---|
| 897 | else changingNode = dataXML.firstChild.childNodes[section];
|
---|
| 898 | wndDialog.content.node = changingNode.cloneNode(true);
|
---|
| 899 | isChanging = true;
|
---|
| 900 | inputingCover = dataXML.firstChild.childNodes[section].attributes.coverpage=="true";
|
---|
| 901 |
|
---|
| 902 | if(item<0 && inputingCover ) return;
|
---|
| 903 |
|
---|
| 904 | if(item>=0) ShowDialog("Item", lang.dlgItem);
|
---|
| 905 | else ShowDialog("Section", lang.dlgSection);
|
---|
| 906 | }
|
---|
| 907 |
|
---|
| 908 | btnDelete.onRelease = function() {
|
---|
| 909 | if( treItem.length == 0 ) return;
|
---|
| 910 | ShowQuestion(lang.msgConfirmDel, lang.msgTitle3, "", DeleteItem);
|
---|
| 911 | }
|
---|
| 912 |
|
---|
| 913 | function SyncVideoAudio() {
|
---|
| 914 | var section = treItem.selectedNode.attributes.section - 1;
|
---|
| 915 | var item = treItem.selectedNode.attributes.item - 1;
|
---|
| 916 | if (item >= 0) {
|
---|
| 917 | if (movScene.sectionSync) {ShowMessage(lang.msgSyncSection, lang.msgTitle1); return;}
|
---|
| 918 | movScene.selectItem(movScene.currentItem, true);
|
---|
| 919 | if (!movScene.firstMediaObj) {ShowMessage(lang.msgSyncNoVideo, lang.msgTitle1); return;}
|
---|
| 920 | if (movScene.currentIndex == undefined) {ShowMessage(lang.msgSyncNoAction, lang.msgTitle1); return;}
|
---|
| 921 | wndDialog.content.node = dataXML.firstChild.childNodes[section].childNodes[item];
|
---|
| 922 | } else {
|
---|
| 923 | if (movScene.currentItemNum < 2) {ShowMessage(lang.msgSyncNoAction, lang.msgTitle1); return;}
|
---|
| 924 | movScene.UpdateBackGround();
|
---|
| 925 | movScene.sectionSync = true;
|
---|
| 926 | movScene.firstMediaObj = movScene.movPageBkGnd.firstMediaObj;
|
---|
| 927 | if (!movScene.firstMediaObj) {ShowMessage(lang.msgSyncNoVideo, lang.msgTitle1); return;}
|
---|
| 928 | movScene.selectItem(1);
|
---|
| 929 | wndDialog.content.node = dataXML.firstChild.childNodes[section];
|
---|
| 930 | }
|
---|
| 931 | movScene.firstMediaObj.autoPlay = true;
|
---|
| 932 | delete movScene.onEnterFrame;
|
---|
| 933 | ShowDialog("Sync", lang.mnuSync);
|
---|
| 934 | wndDialog._x = 15;
|
---|
| 935 | }
|
---|
| 936 |
|
---|
| 937 | function SelectCoverPage() {
|
---|
| 938 | isChanging = false;
|
---|
| 939 | inputingCover = true;
|
---|
| 940 | ShowDialog("Item", lang.dlgItem);
|
---|
| 941 | }
|
---|
| 942 |
|
---|
| 943 | function SelectBackGround() {
|
---|
| 944 | retFrame = "";
|
---|
| 945 | ShowDialog("BkGnd", lang.mnuBackGround);
|
---|
| 946 | }
|
---|
| 947 |
|
---|
| 948 | function AddCoverPage(node) {
|
---|
| 949 | if( !isChanging ) {
|
---|
| 950 | if( dataXML.firstChild.firstChild.attributes.coverpage=="true" ) {
|
---|
| 951 | UpdateUndoData();
|
---|
| 952 | dataXML.firstChild.firstChild.firstChild.removeNode();
|
---|
| 953 | dataXML.firstChild.firstChild.appendChild(node);
|
---|
| 954 | var i = 0;
|
---|
| 955 | while( treItem.getItemAt(i).attributes.section != 1 ) i++;
|
---|
| 956 | treItem.selectedIndex = i+1;
|
---|
| 957 | onChangeHandle();
|
---|
| 958 | GetRelatedFiles();
|
---|
| 959 | } else {
|
---|
| 960 | movScene.ClearBackGround();
|
---|
| 961 | var sectionInfo = dataXML.createElement("SECTION_INFO");
|
---|
| 962 | sectionInfo.attributes.label = lang.coverPage;
|
---|
| 963 | sectionInfo.attributes.coverpage = "true";
|
---|
| 964 | sectionInfo.attributes.invisible = "true";
|
---|
| 965 | sectionInfo.appendChild(node);
|
---|
| 966 | AddSectionData(sectionInfo, 0);
|
---|
| 967 | }
|
---|
| 968 | } else {
|
---|
| 969 | UpdateUndoData();
|
---|
| 970 | changingNode.parentNode.insertBefore(node, changingNode);
|
---|
| 971 | changingNode.removeNode();
|
---|
| 972 | onChangeHandle();
|
---|
| 973 | GetRelatedFiles();
|
---|
| 974 | }
|
---|
| 975 | }
|
---|
| 976 |
|
---|
| 977 | btnLayout.onRelease = function() {
|
---|
| 978 | ShowDialog("Layout", lang.mnuLayout);
|
---|
| 979 | }
|
---|
| 980 |
|
---|
| 981 | btnPreview.onRelease = function() {
|
---|
| 982 | if( btnSceneBkGnd._visible ) { ClosePreview(); return; }
|
---|
| 983 | fscommand("Set Style", "Popup");
|
---|
| 984 | btnSceneBkGnd._visible = true;
|
---|
| 985 | movPlayer.swapDepths(movScenePrev);
|
---|
| 986 | movPlayer._yscale = 100;
|
---|
| 987 | movPlayer._xscale = 100;
|
---|
| 988 | movPlayer._x = 0;
|
---|
| 989 | movPlayer._y = -10;
|
---|
| 990 | }
|
---|
| 991 |
|
---|
| 992 | function ClosePreview() {
|
---|
| 993 | if( !btnSceneBkGnd._visible ) return;
|
---|
| 994 | fscommand("Set Style", "Normal");
|
---|
| 995 | btnSceneBkGnd._visible = false;
|
---|
| 996 | movPlayer.swapDepths(movScenePrev);
|
---|
| 997 | movPlayer._x = 275;
|
---|
| 998 | movPlayer._y = 100;
|
---|
| 999 | movPlayer._xscale = 500/8;
|
---|
| 1000 | movPlayer._yscale = 375/6;
|
---|
| 1001 | }
|
---|
| 1002 |
|
---|
| 1003 | ////////////////////////////////////////////////////////////////////////////////
|
---|
| 1004 | // MENU MODIFY FUNCTIONS
|
---|
| 1005 | //
|
---|
| 1006 | function EditFile(fileName) {
|
---|
| 1007 | command = "";
|
---|
| 1008 | fscommand("Edit File", fileName);
|
---|
| 1009 | onEnterFrame = function() {
|
---|
| 1010 | if( command == "" ) return;
|
---|
| 1011 | if( command == "Launch Error" ) ShowMessage(lang.msgEditError, lang.msgTitle1);
|
---|
| 1012 | onEnterFrame = WaitForAppCommand;
|
---|
| 1013 | command = "";
|
---|
| 1014 | }
|
---|
| 1015 | }
|
---|
| 1016 |
|
---|
| 1017 | ////////////////////////////////////////////////////////////////////////////////
|
---|
| 1018 | // MENU WINDOWS FUNCTIONS
|
---|
| 1019 | //
|
---|
| 1020 | function ResetWindowSize() {
|
---|
| 1021 | windowState = 1;
|
---|
| 1022 | windowTop = 0;
|
---|
| 1023 | windowLeft = 0;
|
---|
| 1024 | windowRight = 0;
|
---|
| 1025 | windowBottom = 0;
|
---|
| 1026 | fscommand("Set State", "");
|
---|
| 1027 | }
|
---|
| 1028 |
|
---|
| 1029 | function SetFlashViewMode(mode) {
|
---|
| 1030 | fscommand("View Mode", mode);
|
---|
| 1031 | flashViewMode = mode;
|
---|
| 1032 | }
|
---|
| 1033 |
|
---|
| 1034 | function ShowConfigDlg() {
|
---|
| 1035 | ShowDialog("Config", lang.mnuConfig);
|
---|
| 1036 | }
|
---|
| 1037 |
|
---|
| 1038 | function UpdatePlugin() {
|
---|
| 1039 | ShowDialog("Plugin", lang.mnuUpdateModules);
|
---|
| 1040 | }
|
---|
| 1041 |
|
---|
| 1042 | function UpdateLayout() {
|
---|
| 1043 | ShowDialog("LayUpdate", lang.mnuUpdateLayouts);
|
---|
| 1044 | }
|
---|
| 1045 |
|
---|
| 1046 | function UpdateCommonLib() {
|
---|
| 1047 | ShowDialog("LibUpdate", lang.mnuUpdateLibs);
|
---|
| 1048 | }
|
---|
| 1049 |
|
---|
| 1050 | function SaveConfigXML(action, data) {
|
---|
| 1051 | ascData = new XML(data.toString());
|
---|
| 1052 | UnicodeAscii(EncodeXml, ascData.firstChild);
|
---|
| 1053 | ascData = defXmlDecl + GetAlignedXml(ascData, 0);
|
---|
| 1054 | fscommand(action, "ascData");
|
---|
| 1055 | }
|
---|
| 1056 |
|
---|
| 1057 | function RunApplication(filename) {
|
---|
| 1058 | SendRequest("Run App", filename, function(response, data) {
|
---|
| 1059 | if (response != "Run OK") ShowMessage(lang.msgCanNotRun + " " + filename, lang.msgTitle1);
|
---|
| 1060 | });
|
---|
| 1061 | }
|
---|
| 1062 | ////////////////////////////////////////////////////////////////////////////////
|
---|
| 1063 | // MENU HELP FUNCTIONS
|
---|
| 1064 | //
|
---|
| 1065 | btnHelp.onRelease = function() {
|
---|
| 1066 | getURL("http://hoctructuyen.violet.vn/present/list/cat_id/7795643", "_blank");
|
---|
| 1067 | }
|
---|
| 1068 |
|
---|
| 1069 | function AutoUpgrade() {
|
---|
| 1070 | ShowDialog("Upgrade", lang.mnuUpgrade);
|
---|
| 1071 | }
|
---|
| 1072 |
|
---|
| 1073 | function AboutProgram() {
|
---|
| 1074 | ShowDialog("About", lang.mnuAbout);
|
---|
| 1075 | }
|
---|
| 1076 |
|
---|
| 1077 | ////////////////////////////////////////////////////////////////////////////////
|
---|
| 1078 | // MENU ACCOUNT FUNCTIONS
|
---|
| 1079 | //
|
---|
| 1080 | function EditAccountInfo() {
|
---|
| 1081 | ShowGrayScreen();
|
---|
| 1082 | LoadPopupMovie(lang.dlgLoginTitle, "Popup" + slash + "UserManager.swf|Update",
|
---|
| 1083 | null, function() {ShowGrayScreen(false)}, null, "Language" + slash + "User");
|
---|
| 1084 | }
|
---|
| 1085 |
|
---|
| 1086 | function ManageCastAccount() {
|
---|
| 1087 | ShowGrayScreen();
|
---|
| 1088 | LoadPopupMovie(lang.dlgLoginTitle, "Popup" + slash + "UserManager.swf|Payment",
|
---|
| 1089 | null, function() {ShowGrayScreen(false)}, null, "Language" + slash + "User");
|
---|
| 1090 | }
|
---|
| 1091 |
|
---|
| 1092 | function ShowVioletLicense() {
|
---|
| 1093 | ShowGrayScreen();
|
---|
| 1094 | LoadPopupMovie(lang.dlgLoginTitle, "Popup" + slash + "UserManager.swf|License",
|
---|
| 1095 | null, function() {ShowGrayScreen(false)}, null, "Language" + slash + "User");
|
---|
| 1096 | }
|
---|
| 1097 |
|
---|
| 1098 | function LoginViolet() {
|
---|
| 1099 | ShowGrayScreen();
|
---|
| 1100 | LoadPopupMovie(lang.dlgLoginTitle, "Popup" + slash + "UserManager.swf|Login",
|
---|
| 1101 | function(lv) {
|
---|
| 1102 | ShowGrayScreen(false);
|
---|
| 1103 | userId = lv.id;
|
---|
| 1104 | userLevel = lv.level;
|
---|
| 1105 | userPhone = lv.phone;
|
---|
| 1106 | userMoney = lv.money;
|
---|
| 1107 | appUserName = lv.fullname;
|
---|
| 1108 | appAddress = lv.school + ", " + lv.province;
|
---|
| 1109 | dataXML.firstChild.attributes.Info = unescape(appUserName) + " - " + unescape(appAddress);
|
---|
| 1110 | dataXML.firstChild.attributes.Check = dataXML.firstChild.attributes.Info.length + 13;
|
---|
| 1111 | movScene.movTemplate.userInfo = movDefLayout.userInfo = dataXML.firstChild.attributes.Info;
|
---|
| 1112 | licenseInfo = {type: lv.licType, customer: lv.licCustomer, create: lv.licCreate, expire: lv.licExpire}
|
---|
| 1113 | }, false, null, "Language" + slash + "User");
|
---|
| 1114 | }
|
---|
| 1115 |
|
---|
[698] | 1116 | // load user info
|
---|
| 1117 | function LoadUserInfo() {
|
---|
| 1118 | // gray screen
|
---|
| 1119 | ShowGrayScreen();
|
---|
| 1120 |
|
---|
| 1121 | // load user info
|
---|
| 1122 | var xml_userinfo:XML = new XML();
|
---|
| 1123 | xml_userinfo.ignoreWhite = true;
|
---|
| 1124 |
|
---|
| 1125 | xml_userinfo.onLoad = function(success) {
|
---|
| 1126 | // hide gray screen
|
---|
| 1127 | ShowGrayScreen(false);
|
---|
| 1128 |
|
---|
| 1129 | // user data
|
---|
| 1130 | var attr:Object = this.firstChild.firstChild.attributes;
|
---|
| 1131 | userId = attr.userId;
|
---|
| 1132 | userLevel = attr.userLevel;
|
---|
| 1133 | userPhone = attr.userPhone;
|
---|
| 1134 | userMoney = attr.userMoney;
|
---|
| 1135 | appUserName = attr.appUserName;
|
---|
| 1136 | appAddress = attr.appAddress;
|
---|
| 1137 | dataXML.firstChild.attributes.Info = unescape(appUserName) + " - " + unescape(appAddress);
|
---|
| 1138 | dataXML.firstChild.attributes.Check = dataXML.firstChild.attributes.Info.length + 13;
|
---|
| 1139 | movScene.movTemplate.userInfo = movDefLayout.userInfo = dataXML.firstChild.attributes.Info;
|
---|
| 1140 | licenseInfo = { type: attr.licType, customer: attr.licCustomer, create: attr.licCreate, expire: attr.licExpire }
|
---|
| 1141 |
|
---|
| 1142 | //
|
---|
| 1143 | if (fileId != undefined) {
|
---|
| 1144 | _root.openFileInterval = setInterval(OpenFileById, 1000);
|
---|
| 1145 | }
|
---|
| 1146 | }
|
---|
| 1147 |
|
---|
| 1148 | var str:String = (host == undefined) ? userInfoUrl : (host + userInfoUrl);
|
---|
| 1149 | xml_userinfo.load(str);
|
---|
| 1150 | }
|
---|
[297] | 1151 |
|
---|
[698] | 1152 | // Nếu user info được lấy theo cách truyền từ flashvars:
|
---|
| 1153 | function UpdateFromFlashVars() {
|
---|
| 1154 | dataXML.firstChild.attributes.Info = unescape(appUserName) + " - " + unescape(appAddress);
|
---|
| 1155 | dataXML.firstChild.attributes.Check = dataXML.firstChild.attributes.Info.length + 13;
|
---|
| 1156 | movScene.movTemplate.userInfo = movDefLayout.userInfo = dataXML.firstChild.attributes.Info;
|
---|
| 1157 | licenseInfo = {type: licType, customer: licCustomer, create: licCreate, expire: licExpire}
|
---|
| 1158 | }
|
---|
[297] | 1159 |
|
---|
[698] | 1160 |
|
---|
[297] | 1161 | function LogoutViolet() {
|
---|
| 1162 | ExecWithConfirmSave(function() {
|
---|
| 1163 | CreateNewData();
|
---|
| 1164 | var lv:LoadVars = new LoadVars();
|
---|
| 1165 | lv.send(userUrl + "logout");
|
---|
| 1166 | userId = 0;
|
---|
| 1167 | LoginViolet();
|
---|
| 1168 | });
|
---|
| 1169 | }
|
---|
| 1170 |
|
---|
| 1171 | ////////////////////////////////////////////////////////////////////////////////
|
---|
| 1172 | // RIGHT CLICK MENU ITEMS
|
---|
| 1173 | //
|
---|
| 1174 | function InitTreeContextMenu() {
|
---|
| 1175 | var cmTree = new ContextMenu();
|
---|
| 1176 | var cmiAbout = new ContextMenuItem("About ViOLET...", function() {getURL("http://www.bachkim.vn", "_blank")});
|
---|
| 1177 | var cmiCut = new ContextMenuItem("Cut (Ctrl+X)", btnCutOnRelease);
|
---|
| 1178 | var cmiCopy = new ContextMenuItem("Copy (Ctrl+C)", btnCopyOnRelease);
|
---|
| 1179 | var cmiPaste = new ContextMenuItem("Paste (Ctrl+V)", btnPasteOnRelease);
|
---|
| 1180 | var cmiAdd = new ContextMenuItem("Add (F5)", btnAdd.onRelease);
|
---|
| 1181 | var cmiChange = new ContextMenuItem("Change (F6)", btnDetail.onRelease);
|
---|
| 1182 | var cmiDelete = new ContextMenuItem("Delete (Del)", btnDelete.onRelease);
|
---|
| 1183 | cmiCut.separatorBefore = true;
|
---|
| 1184 | cmiAdd.separatorBefore = true;
|
---|
| 1185 | cmTree.hideBuiltInItems();
|
---|
| 1186 | cmTree.customItems.push(cmiAbout, cmiCut, cmiCopy, cmiPaste, cmiAdd, cmiChange, cmiDelete);
|
---|
| 1187 | treItem.menu = cmTree;
|
---|
| 1188 | } |
---|