axplayer.js.orig 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. if (!window.$axure) window.$axure = function () { };
  2. if (typeof console == 'undefined') console = {
  3. log: function () { }
  4. };
  5. if(window._axUtils) $axure.utils = _axUtils;
  6. $axure.loadDocument = function(document) {
  7. $axure.document = document;
  8. };
  9. function setUpController() {
  10. //$axure.utils = _axUtils;
  11. var _page = {};
  12. $axure.page = _page;
  13. $axure.utils.makeBindable(_page, ['load']);
  14. var _player = function() {
  15. };
  16. $axure.player = _player;
  17. //-----------------------------------------
  18. //Global Var array, getLinkUrl function and setGlobalVar listener are
  19. //for use in setting global vars in page url string when clicking a
  20. //page in the sitemap
  21. //-----------------------------------------
  22. var _globalVars = {};
  23. var _getLinkUrl = function(baseUrl, viewId) {
  24. var toAdd = '';
  25. for(var globalVarName in _globalVars) {
  26. var val = _globalVars[globalVarName];
  27. if(val != null && val.length > 0) {
  28. if(toAdd.length > 0) toAdd += '&';
  29. toAdd += globalVarName + '=' + encodeURIComponent(val);
  30. }
  31. }
  32. var viewOverride = viewId ? '&AXVIEWIDOVERRIDE=' + viewId : '';
  33. return toAdd.length > 0 || viewId ? baseUrl + '#' + toAdd + viewOverride + '&CSUM=1' : baseUrl;
  34. };
  35. $axure.getLinkUrlWithVars = _getLinkUrl;
  36. $axure.messageCenter.addMessageListener(function(message, data) {
  37. if (message == 'setGlobalVar'){
  38. _globalVars[data.globalVarName] = data.globalVarValue;
  39. }
  40. });
  41. $axure.messageCenter.addStateListener('page.data', function (key, value) {
  42. for (var subKey in value) {
  43. _page[subKey] = value[subKey];
  44. }
  45. $axure.page.triggerEvent('load');
  46. });
  47. // ---------------------------------------------
  48. // Navigates the main frame (setting the currently visible page). If the link is relative,
  49. // this method should test if it is actually a axure rp page being loaded and properly set
  50. // up all the controller for the page if it is
  51. // ---------------------------------------------
  52. _page.navigate = function (url, includeVariables, viewId) {
  53. var mainFrame = document.getElementById("mainFrame");
  54. //var mainFrame = window.parent.mainFrame;
  55. // if this is a relative url...
  56. var urlToLoad;
  57. if (url.indexOf(':') < 0 || url[0] == '/') {
  58. var winHref = window.location.href;
  59. var page = winHref.substring(0, winHref.lastIndexOf('/') + 1) + url;
  60. urlToLoad = page;
  61. } else {
  62. urlToLoad = url;
  63. }
  64. if (!includeVariables) {
  65. mainFrame.contentWindow.location.href = urlToLoad;
  66. return;
  67. }
  68. var urlWithVars = $axure.getLinkUrlWithVars(urlToLoad, viewId);
  69. var currentData = $axure.messageCenter.getState('page.data');
  70. var currentUrl = currentData && currentData.location;
  71. if(currentUrl && currentUrl.indexOf('#') != -1) currentUrl = currentUrl.substring(0, currentUrl.indexOf('#'))
  72. // this is so we can make sure the current frame reloads if the variables have changed
  73. // by default, if the location is the same but the hash code is different, the browser will not
  74. // trigger a reload
  75. mainFrame.contentWindow.location.href =
  76. currentUrl && urlToLoad.toLowerCase() != currentUrl.toLowerCase()
  77. ? urlWithVars
  78. : 'resources/reload.html#' + encodeURI(urlWithVars);
  79. };
  80. var pluginIds = [];
  81. var currentVisibleHostId = null;
  82. // ---------------------------------------------
  83. // Adds a tool box frame from a url to the interface. This is useful for loading plugins
  84. // settings is an object that supports the following properties:
  85. // - id : the id of the element for the plugin
  86. // - context : the context to create the plugin host for
  87. // - title : the user-visible caption for the plugin
  88. // ---------------------------------------------
  89. _player.createPluginHost = function (settings) {
  90. // right now we only understand an interface context
  91. if (!(!settings.context || settings.context === 'interface')) {
  92. throw ('unknown context type');
  93. }
  94. if (!settings.id) throw ('each plugin host needs an id');
  95. var host = $('<div id=' + settings.id + '></div>')
  96. .appendTo('#interfaceControlFrameContainer');
  97. var isCurrentDefault = (pluginIds.length == 0);
  98. if (!isCurrentDefault) {
  99. host.hide();
  100. } else {
  101. currentVisibleHostId = settings.id;
  102. }
  103. //$('#interfaceControlFrameHeader').append('<li>' + settings.title + '</li>');
  104. var headerLink = $('<a pluginId="' + settings.id + '" >' + settings.title + '</a>');
  105. headerLink
  106. .click($axure.utils.curry(interfaceControlHeaderButton_click, settings.id)).wrap('<li>')
  107. .parent().appendTo('#interfaceControlFrameHeader');
  108. if (isCurrentDefault) {
  109. headerLink.addClass('selected');
  110. }
  111. pluginIds[pluginIds.length] = settings.id;
  112. };
  113. // private methods
  114. var interfaceControlHeaderButton_click = function (id) {
  115. $('#interfaceControlFrameHeader a').removeClass('selected');
  116. $('#interfaceControlFrameHeader a[pluginId=' + id + ']').addClass('selected');
  117. $('#' + currentVisibleHostId).hide();
  118. $('#' + id).show();
  119. currentVisibleHostId = id;
  120. };
  121. }
  122. function setUpDocumentStateManager() {
  123. var mgr = $axure.prototype.documentStateManager = {};
  124. $axure.utils.makeBindable(mgr, ['globalVariableChanged']);
  125. mgr.globalVariableValues = {};
  126. mgr.setGlobalVariable = function(varname, value, source) {
  127. var arg = {};
  128. arg.variableName = varname;
  129. arg.newValue = value;
  130. arg.oldValue = this.getGlobalVariable(varname);
  131. arg.source = source;
  132. mgr.globalVariableValues[varname] = value;
  133. this.triggerEvent('globalVariableChanged', arg);
  134. };
  135. mgr.getGlobalVariable = function(varname) {
  136. return mgr.globalVariableValues[varname];
  137. };
  138. }
  139. function setUpPageStateManager() {
  140. var mgr = $axure.prototype.pageStateManager = {};
  141. mgr.panelToStateIds = {};
  142. }