pod.js 9.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. function generateStringId(charNb, allowedChars) {
  2. if (typeof charNb === 'undefined') { charNb = 32; }
  3. if (typeof allowedChars === 'undefined') { allowedChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; }
  4. var text = "";
  5. for( var i=0; i < charNb; i++ ) {
  6. text += allowedChars.charAt(Math.floor(Math.random() * allowedChars.length));
  7. }
  8. return text;
  9. }
  10. function toggleFullScreen(outerWidgetId, innerWidgetId) {
  11. if($(outerWidgetId).hasClass('full-size-overlay')) {
  12. // Toggle from fullscreen to "normal"
  13. $(outerWidgetId).removeClass('full-size-overlay');
  14. $(innerWidgetId).removeClass('full-size-overlay-inner');
  15. $('.pod-toggle-full-screen-button > i').removeClass('fa-compress')
  16. $('.pod-toggle-full-screen-button > i').addClass('fa-expand')
  17. } else {
  18. // Toggle from normal to fullscreen
  19. $(outerWidgetId).addClass('full-size-overlay');
  20. $(innerWidgetId).addClass('full-size-overlay-inner');
  21. $('.pod-toggle-full-screen-button > i').removeClass('fa-expand')
  22. $('.pod-toggle-full-screen-button > i').addClass('fa-compress')
  23. }
  24. }
  25. function initToolbarBootstrapBindings(richTextEditorId) {
  26. // $('a[title]').tooltip({container:'body'});
  27. $(richTextEditorId+' > .dropdown-menu input').click(function() {return false;})
  28. .change(function () {$(this).parent('.dropdown-menu').siblings('.dropdown-toggle').dropdown('toggle');})
  29. .keydown('esc', function () {this.value='';$(this).change();});
  30. $('[data-role=magic-overlay]').each(function () {
  31. var overlay = $(this), target = $(overlay.data('target'));
  32. overlay.css('opacity', 0).css('position', 'absolute').offset(target.offset()).width(target.outerWidth()).height(target.outerHeight());
  33. });
  34. if ("onwebkitspeechchange" in document.createElement("input")) {
  35. var editorOffset = $(richTextEditorId).offset();
  36. $('#voiceBtn').css('position','absolute').offset({top: editorOffset.top, left: editorOffset.left+$(richTextEditorId).innerWidth()-35});
  37. } else {
  38. $('#voiceBtn').hide();
  39. }
  40. };
  41. function showErrorAlert (reason, detail) {
  42. var msg='';
  43. if (reason==='unsupported-file-type') { msg = "Unsupported format " +detail; }
  44. else {
  45. console.log("error uploading file", reason, detail);
  46. }
  47. $('<div class="alert"> <button type="button" class="close" data-dismiss="alert">&times;</button>'+
  48. '<strong>File upload error</strong> '+msg+' </div>').prependTo('#alerts');
  49. };
  50. $(document).ready(function() {
  51. /* EDIT CONTENT FORM */
  52. $("#current-document-content-edit-form" ).css("display", "none");
  53. $("#current-document-content-edit-button" ).click(function() {
  54. $("#current-document-content" ).css("display", "none");
  55. $("#current-document-content-edit-form" ).css("display", "block");
  56. $("#current-document-toobar").css("display", "none");
  57. });
  58. $("#current-document-content-edit-cancel-button, #current-document-content-edit-cancel-button-top" ).click(function() {
  59. $("#current-document-content" ).css("display", "block");
  60. $("#current-document-content-edit-form" ).css("display", "none");
  61. $("#current-document-toobar").css("display", "block");
  62. });
  63. $('#current-document-content-edit-save-button, #current-document-content-edit-save-button-top').on('click', function(e){
  64. // We don't want this to act as a link so cancel the link action
  65. e.preventDefault();
  66. $('#current_node_textarea_wysiwyg').cleanHtml();
  67. $('#current_node_textarea').val($('#current_node_textarea_wysiwyg').html());
  68. $('#current-document-content-edit-form').submit();
  69. });
  70. $(function() {
  71. $('.datetime-picker-input-div').datetimepicker({
  72. language: 'fr-FR',
  73. pickSeconds: false
  74. });
  75. });
  76. // #################################
  77. // ##
  78. // ## The following JS code allow t
  79. // ##
  80. // ##
  81. // Javascript to enable link to tab
  82. var hash = document.location.hash;
  83. var prefix = "tab-";
  84. if (hash) {
  85. $('.nav-tabs a[href='+hash.replace(prefix,"")+']').tab('show');
  86. }
  87. // Change hash for page-reload
  88. $('.nav-tabs a').on('shown', function (e) {
  89. window.location.hash = e.target.hash.replace("#", "#" + prefix);
  90. });
  91. // #################################
  92. // ##
  93. // ## Show/hide behavior
  94. // ## for the main menu
  95. // ##
  96. // ##
  97. $('a.toggle-child-menu-items').on('click', function (e) {
  98. parent_id = $(this).parent().attr('id');
  99. child = $('#'+parent_id+'-children');
  100. togglebutton = $(this).children('i:first')
  101. if(child.css('display')=='none'){
  102. child.css("display", "block");
  103. togglebutton.removeClass('icon-g-folder-plus');
  104. togglebutton.attr('class', 'icon-g-folder-open');
  105. console.log("class is: "+togglebutton.attr('class'));
  106. } else {
  107. child.css("display", "none");
  108. togglebutton.removeClass('icon-g-folder-open');
  109. togglebutton.addClass('icon-g-folder-plus');
  110. console.log("class is: "+togglebutton.attr('class'));
  111. }
  112. });
  113. // #################################
  114. // ##
  115. // ## large / small view of the document
  116. // ## (toggle visibility of the left panel)
  117. // ##
  118. // ##
  119. $('a#view-size-toggle-button-small').on('click', function (e) {
  120. console.log("Toggle view mode");
  121. $('#view-size-toggle-button-small').css('display', 'none');
  122. $('#view-size-toggle-button-medium').css('display', 'block');
  123. $('#view-size-toggle-button-large').css('display', 'none');
  124. left_panel_id = '#application-left-panel'; // is span3 by default (to be hidden in fullscreen mode)
  125. main_panel_id = '#application-main-panel'; // is span9 by default (to be 12 in fullscreen mode)
  126. docu_panel_id = '#application-document-panel'; // is span5 by default (to be span8 in fullscreen mode)
  127. metadata_panel_id = '#application-metadata-panel';
  128. left_panel = $(left_panel_id);
  129. main_panel = $(main_panel_id);
  130. docu_panel = $(docu_panel_id);
  131. metadata_panel = $(metadata_panel_id);
  132. console.log("Toggle from small (default) to medium (no left tab)");
  133. left_panel.css('display', 'block');
  134. metadata_panel.css('display', 'block');
  135. main_panel.removeClass('span9');
  136. main_panel.removeClass('span12');
  137. main_panel.addClass('span9');
  138. docu_panel.removeClass('span5');
  139. docu_panel.removeClass('span8');
  140. docu_panel.removeClass('span12');
  141. docu_panel.addClass('span5');
  142. });
  143. $('a#view-size-toggle-button-medium').on('click', function (e) {
  144. console.log("Toggle view mode to: MEDIUM");
  145. $('#view-size-toggle-button-small').css('display', 'none');
  146. $('#view-size-toggle-button-medium').css('display', 'none');
  147. $('#view-size-toggle-button-large').css('display', 'block');
  148. left_panel_id = '#application-left-panel'; // is span3 by default (to be hidden in fullscreen mode)
  149. main_panel_id = '#application-main-panel'; // is span9 by default (to be 12 in fullscreen mode)
  150. docu_panel_id = '#application-document-panel'; // is span5 by default (to be span8 in fullscreen mode)
  151. metadata_panel_id = '#application-metadata-panel';
  152. left_panel = $(left_panel_id);
  153. main_panel = $(main_panel_id);
  154. docu_panel = $(docu_panel_id);
  155. metadata_panel = $(metadata_panel_id);
  156. left_panel.css('display', 'none');
  157. metadata_panel.css('display', 'block');
  158. main_panel.removeClass('span9');
  159. main_panel.addClass('span12');
  160. docu_panel.removeClass('span5');
  161. docu_panel.removeClass('span12');
  162. docu_panel.addClass('span8');
  163. });
  164. $('a#view-size-toggle-button-large').on('click', function (e) {
  165. console.log("Toggle view mode to: LARGE");
  166. $('#view-size-toggle-button-small').css('display', 'block');
  167. $('#view-size-toggle-button-medium').css('display', 'none');
  168. $('#view-size-toggle-button-large').css('display', 'none');
  169. left_panel_id = '#application-left-panel'; // is span3 by default (to be hidden in fullscreen mode)
  170. main_panel_id = '#application-main-panel'; // is span9 by default (to be 12 in fullscreen mode)
  171. docu_panel_id = '#application-document-panel'; // is span5 by default (to be span8 in fullscreen mode)
  172. metadata_panel_id = '#application-metadata-panel';
  173. left_panel = $(left_panel_id);
  174. main_panel = $(main_panel_id);
  175. docu_panel = $(docu_panel_id);
  176. metadata_panel = $(metadata_panel_id);
  177. left_panel.css('display', 'none');
  178. metadata_panel.css('display', 'none');
  179. main_panel.removeClass('span9');
  180. main_panel.addClass('span12');
  181. docu_panel.removeClass('span5');
  182. docu_panel.removeClass('span8');
  183. docu_panel.addClass('span12');
  184. });
  185. // ALLOW TO SHOW POPOVER WITH SPECIFIC DATA
  186. $('.item-with-data-popoverable').popover({ html: true});
  187. /** Make calculator available on all pages */
  188. $('#keyboard span').on('click', function (e) {
  189. current_value = $(this).text()
  190. if(current_value=='C') {
  191. $('#calculation').val('');
  192. $('#result').val('');
  193. } else if(current_value=='=') {
  194. string = $('#calculation').val().replace(/[^0-9+-/\*\%\(\)]/gi, ''); // replace('/[^0-9()*/-+]/g', "");
  195. console.log("Compute value of "+string)
  196. calculation = eval(string);
  197. console.log("Result is: "+calculation)
  198. $('#result').val(calculation)
  199. } else {
  200. field = $('#calculation')
  201. field.oldval = field.val();
  202. field.val(field.oldval+current_value)
  203. }
  204. });
  205. });