PageRenderTime 49ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/templates/modules/mod-minichat.tpl

https://gitlab.com/ElvisAns/tiki
Smarty Template | 196 lines | 159 code | 37 blank | 0 comment | 26 complexity | 6c58f6acbba25f909bf9ad261dcfddbd MD5 | raw file
  1. {tikimodule error=$module_params.error title=$tpl_module_title name="minichat" flip=$module_params.flip decorations=$module_params.decorations nobox=$module_params.nobox notitle=$module_params.notitle}
  2. {if $tiki_p_chat eq 'y'}
  3. <div id='minichatchans' class='btn-group minichatchans mb-2'{if $module_params.nochannelbar && $module_params.nochannelbar != "n"} style="height: 0; visibility: hidden"{/if}></div>
  4. <div id='minichat' class='minichat well well-sm' style='overflow-x: hidden; overflow-y: auto; height: {$module_rows}em;'></div>
  5. <div class="minichatinputs">
  6. <form name='minichatinputform' action='javascript:minichatpost();'>
  7. <div class="input-group input-group-sm">
  8. <input class="form-control" name='minichatinput' id='minichatinput' type='text' autocomplete='off'>
  9. <input class="btn btn-primary" type='submit' value="{tr}OK{/tr}">
  10. </div>
  11. </form>
  12. </div>
  13. {else}
  14. {tr}You do not have the permission that is needed to use this feature.{/tr}
  15. {/if}
  16. {/tikimodule}
  17. {if $tiki_p_chat eq 'y'}
  18. {literal}
  19. <script language='javascript' type='text/javascript'>
  20. var minichat_lasttimeout=6000;
  21. var minichat_firstchan=null;
  22. var minichat_lastchan=null;
  23. var minichat_bigid=0;
  24. var minichat_selectedchan=null;
  25. function minichat_urlencode(str) {
  26. str = encodeURIComponent(str);
  27. str = str.replace('+', '%2B');
  28. str = str.replace('%20', '+');
  29. str = str.replace('*', '%2A');
  30. str = str.replace('/', '%2F');
  31. str = str.replace('@', '%40');
  32. return str;
  33. }
  34. function minichat_mkurl() {
  35. var date=new Date();
  36. var u="tiki-minichat_ajax.php?lasttimeout="+minichat_lasttimeout+"&iebug="+date.getTime();
  37. u+="&chans=";
  38. var c=minichat_firstchan;
  39. while(c) {
  40. var cname=minichat_urlencode(c.name);
  41. u+=cname+';'+c.lastid;
  42. c=c.nxt;
  43. if (c) u+=',';
  44. }
  45. return u;
  46. }
  47. function minichat_loadJS(file) {
  48. var head = document.getElementsByTagName('head').item(0);
  49. var scriptTag = document.getElementById('minichat_loadJS');
  50. if (scriptTag) head.removeChild(scriptTag);
  51. script = document.createElement('script');
  52. script.src = file;
  53. script.type = 'text/javascript';
  54. script.id = 'minichat_loadJS';
  55. head.appendChild(script);
  56. }
  57. function minichat_update() {
  58. var u=minichat_mkurl();
  59. minichat_loadJS(u);
  60. }
  61. function minichatpost() {
  62. var obj=document.getElementById('minichatinput');
  63. var value=minichat_urlencode(obj.value);
  64. var u=minichat_mkurl();
  65. if (minichat_selectedchan) u+="&msgon="+minichat_urlencode(minichat_selectedchan.name);
  66. u+="&msg="+value;
  67. minichat_loadJS(u);
  68. obj.value='';
  69. }
  70. function minichat_newelem(type, vals) {
  71. var elem=document.createElement(type);
  72. for (key in vals) {
  73. //elem[key]=vals[key];
  74. elem.setAttribute(key, vals[key]);
  75. }
  76. return elem;
  77. }
  78. function minichat_selectchannel(chan) {
  79. var c=minichat_lastchan;
  80. if (minichat_selectedchan) {
  81. var d=document.getElementById('minichatdiv_'+minichat_selectedchan.id);
  82. d.style.display="none";
  83. d=document.getElementById('minichata_'+minichat_selectedchan.id);
  84. d.setAttribute('class', 'btn btn-primary btn-sm minichata_unselected');
  85. minichat_selectedchan=null;
  86. }
  87. while(c) {
  88. if (c.name == chan) {
  89. var d=document.getElementById('minichatdiv_'+c.id);
  90. d.style.display="";
  91. d=document.getElementById('minichata_'+c.id);
  92. d.setAttribute('class', 'active btn btn-primary btn-sm minichata_selected');
  93. minichat_selectedchan=c;
  94. }
  95. c=c.prv;
  96. }
  97. document.getElementById('minichat').scrollTop=99999;
  98. }
  99. function minichat_addchannel(chan) {
  100. var c={ prv : null, nxt : null, name : chan, id: minichat_bigid++, lastid: 0 };
  101. c.prv=minichat_lastchan;
  102. if (minichat_lastchan) minichat_lastchan.nxt=c;
  103. minichat_lastchan=c;
  104. if (!minichat_firstchan) minichat_firstchan=c;
  105. var d=minichat_newelem("div", { 'id' : 'minichatdiv_'+c.id , 'class' : 'minichatdiv' });
  106. document.getElementById('minichat').appendChild(d);
  107. d=minichat_newelem("a", { 'id' : 'minichata_'+c.id, 'class' : 'btn btn-primary btn-sm minichata_unselected', 'role' : 'button' , 'href' : "javascript: minichat_selectchannel('"+c.name+"');" });
  108. d.innerHTML=c.name;
  109. document.getElementById('minichatchans').appendChild(d);
  110. minichat_selectchannel(chan);
  111. }
  112. function minichat_removechannel(chan) {
  113. var c=minichat_lastchan;
  114. var found=null;
  115. while(c) {
  116. if (c.name == chan) {
  117. found=c;
  118. if (minichat_firstchan==c) minichat_firstchan=c.nxt;
  119. if (minichat_lastchan==c) minichat_lastchan=c.prv;
  120. if (c.prv) c.prv.nxt=c.nxt;
  121. if (c.nxt) c.nxt.prv=c.prv;
  122. var d=document.getElementById('minichatdiv_'+c.id);
  123. document.getElementById('minichat').removeChild(d);
  124. d=document.getElementById('minichata_'+c.id);
  125. document.getElementById('minichatchans').removeChild(d);
  126. break;
  127. }
  128. c=c.prv;
  129. }
  130. if (found == minichat_selectedchan) {
  131. minichat_selectedchan=null;
  132. if (found.prv) minichat_selectchannel(found.prv.name);
  133. else if (minichat_lastchan) minichat_selectchannel(minichat_lastchan.name);
  134. }
  135. }
  136. function minichat_updatelastid(chan, lastid) {
  137. var c=minichat_lastchan;
  138. while(c) {
  139. if (c.name == chan) {
  140. c.lastid=lastid;
  141. }
  142. c=c.prv;
  143. }
  144. }
  145. function minichat_getchanid(chan) {
  146. var c=minichat_lastchan;
  147. while(c) {
  148. if (c.name == chan) {
  149. return c.id;
  150. }
  151. c=c.prv;
  152. }
  153. return null;
  154. }
  155. {/literal}{$jscode}{literal}
  156. setTimeout('minichat_update()', 20);
  157. </script>
  158. {/literal}
  159. {/if}