ish_manager 0.1.8.420 → 0.1.8.422

Sign up to get free protection for your applications and to get access to all the features.
Files changed (183) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/ish_manager/application.js +11 -22
  3. data/app/assets/javascripts/ish_manager/email_conversations.js +10 -9
  4. data/app/assets/javascripts/ish_manager/email_templates.js +0 -1
  5. data/app/assets/javascripts/ish_manager/vendor/summernote-bs4.min.js +3 -0
  6. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/font/summernote.eot +0 -0
  7. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/font/summernote.ttf +0 -0
  8. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/font/summernote.woff +0 -0
  9. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/font/summernote.woff2 +0 -0
  10. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-ar-AR.js +274 -0
  11. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-ar-AR.min.js +2 -0
  12. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-ar-AR.min.js.LICENSE.txt +1 -0
  13. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-az-AZ.js +283 -0
  14. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-az-AZ.min.js +2 -0
  15. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-az-AZ.min.js.LICENSE.txt +1 -0
  16. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-bg-BG.js +274 -0
  17. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-bg-BG.min.js +2 -0
  18. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-bg-BG.min.js.LICENSE.txt +1 -0
  19. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-ca-ES.js +273 -0
  20. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-ca-ES.min.js +2 -0
  21. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-ca-ES.min.js.LICENSE.txt +1 -0
  22. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-cs-CZ.js +268 -0
  23. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-cs-CZ.min.js +2 -0
  24. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-cs-CZ.min.js.LICENSE.txt +1 -0
  25. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-da-DK.js +273 -0
  26. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-da-DK.min.js +2 -0
  27. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-da-DK.min.js.LICENSE.txt +1 -0
  28. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-de-DE.js +274 -0
  29. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-de-DE.min.js +2 -0
  30. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-de-DE.min.js.LICENSE.txt +1 -0
  31. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-el-GR.js +281 -0
  32. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-el-GR.min.js +2 -0
  33. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-el-GR.min.js.LICENSE.txt +1 -0
  34. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-es-ES.js +280 -0
  35. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-es-ES.min.js +2 -0
  36. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-es-ES.min.js.LICENSE.txt +1 -0
  37. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-es-EU.js +272 -0
  38. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-es-EU.min.js +2 -0
  39. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-es-EU.min.js.LICENSE.txt +1 -0
  40. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-fa-IR.js +273 -0
  41. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-fa-IR.min.js +2 -0
  42. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-fa-IR.min.js.LICENSE.txt +1 -0
  43. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-fi-FI.js +271 -0
  44. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-fi-FI.min.js +2 -0
  45. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-fi-FI.min.js.LICENSE.txt +1 -0
  46. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-fr-FR.js +273 -0
  47. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-fr-FR.min.js +2 -0
  48. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-fr-FR.min.js.LICENSE.txt +1 -0
  49. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-gl-ES.js +273 -0
  50. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-gl-ES.min.js +2 -0
  51. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-gl-ES.min.js.LICENSE.txt +1 -0
  52. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-he-IL.js +273 -0
  53. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-he-IL.min.js +2 -0
  54. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-he-IL.min.js.LICENSE.txt +1 -0
  55. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-hr-HR.js +273 -0
  56. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-hr-HR.min.js +2 -0
  57. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-hr-HR.min.js.LICENSE.txt +1 -0
  58. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-hu-HU.js +273 -0
  59. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-hu-HU.min.js +2 -0
  60. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-hu-HU.min.js.LICENSE.txt +1 -0
  61. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-id-ID.js +273 -0
  62. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-id-ID.min.js +2 -0
  63. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-id-ID.min.js.LICENSE.txt +1 -0
  64. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-it-IT.js +273 -0
  65. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-it-IT.min.js +2 -0
  66. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-it-IT.min.js.LICENSE.txt +1 -0
  67. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-ja-JP.js +273 -0
  68. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-ja-JP.min.js +2 -0
  69. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-ja-JP.min.js.LICENSE.txt +1 -0
  70. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-ko-KR.js +275 -0
  71. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-ko-KR.min.js +2 -0
  72. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-ko-KR.min.js.LICENSE.txt +1 -0
  73. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-lt-LT.js +273 -0
  74. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-lt-LT.min.js +2 -0
  75. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-lt-LT.min.js.LICENSE.txt +1 -0
  76. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-lt-LV.js +273 -0
  77. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-lt-LV.min.js +2 -0
  78. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-lt-LV.min.js.LICENSE.txt +1 -0
  79. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-mn-MN.js +274 -0
  80. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-mn-MN.min.js +2 -0
  81. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-mn-MN.min.js.LICENSE.txt +1 -0
  82. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-nb-NO.js +272 -0
  83. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-nb-NO.min.js +2 -0
  84. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-nb-NO.min.js.LICENSE.txt +1 -0
  85. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-nl-NL.js +273 -0
  86. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-nl-NL.min.js +2 -0
  87. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-nl-NL.min.js.LICENSE.txt +1 -0
  88. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-pl-PL.js +273 -0
  89. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-pl-PL.min.js +2 -0
  90. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-pl-PL.min.js.LICENSE.txt +1 -0
  91. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-pt-BR.js +274 -0
  92. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-pt-BR.min.js +2 -0
  93. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-pt-BR.min.js.LICENSE.txt +1 -0
  94. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-pt-PT.js +273 -0
  95. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-pt-PT.min.js +2 -0
  96. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-pt-PT.min.js.LICENSE.txt +1 -0
  97. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-ro-RO.js +273 -0
  98. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-ro-RO.min.js +2 -0
  99. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-ro-RO.min.js.LICENSE.txt +1 -0
  100. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-ru-RU.js +273 -0
  101. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-ru-RU.min.js +2 -0
  102. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-ru-RU.min.js.LICENSE.txt +1 -0
  103. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-sk-SK.js +271 -0
  104. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-sk-SK.min.js +2 -0
  105. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-sk-SK.min.js.LICENSE.txt +1 -0
  106. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-sl-SI.js +273 -0
  107. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-sl-SI.min.js +2 -0
  108. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-sl-SI.min.js.LICENSE.txt +1 -0
  109. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-sr-RS-Latin.js +273 -0
  110. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-sr-RS-Latin.min.js +2 -0
  111. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-sr-RS-Latin.min.js.LICENSE.txt +1 -0
  112. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-sr-RS.js +273 -0
  113. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-sr-RS.min.js +2 -0
  114. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-sr-RS.min.js.LICENSE.txt +1 -0
  115. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-sv-SE.js +273 -0
  116. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-sv-SE.min.js +2 -0
  117. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-sv-SE.min.js.LICENSE.txt +1 -0
  118. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-ta-IN.js +273 -0
  119. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-ta-IN.min.js +2 -0
  120. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-ta-IN.min.js.LICENSE.txt +1 -0
  121. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-th-TH.js +273 -0
  122. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-th-TH.min.js +2 -0
  123. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-th-TH.min.js.LICENSE.txt +1 -0
  124. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-tr-TR.js +273 -0
  125. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-tr-TR.min.js +2 -0
  126. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-tr-TR.min.js.LICENSE.txt +1 -0
  127. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-uk-UA.js +273 -0
  128. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-uk-UA.min.js +2 -0
  129. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-uk-UA.min.js.LICENSE.txt +1 -0
  130. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-uz-UZ.js +230 -0
  131. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-uz-UZ.min.js +2 -0
  132. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-uz-UZ.min.js.LICENSE.txt +1 -0
  133. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-vi-VN.js +273 -0
  134. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-vi-VN.min.js +2 -0
  135. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-vi-VN.min.js.LICENSE.txt +1 -0
  136. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-zh-CN.js +273 -0
  137. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-zh-CN.min.js +2 -0
  138. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-zh-CN.min.js.LICENSE.txt +1 -0
  139. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-zh-TW.js +273 -0
  140. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-zh-TW.min.js +2 -0
  141. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/lang/summernote-zh-TW.min.js.LICENSE.txt +1 -0
  142. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/plugin/databasic/summernote-ext-databasic.css +16 -0
  143. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/plugin/databasic/summernote-ext-databasic.js +291 -0
  144. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/plugin/hello/summernote-ext-hello.js +82 -0
  145. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/plugin/specialchars/summernote-ext-specialchars.js +311 -0
  146. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/summernote-bs4.css +13 -0
  147. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/summernote-bs4.js +10234 -0
  148. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/summernote-bs4.js.map +1 -0
  149. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/summernote-bs4.min.js.LICENSE.txt +1 -0
  150. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/summernote-bs4.min.js.map +1 -0
  151. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/summernote-lite.css +13 -0
  152. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/summernote-lite.js +10782 -0
  153. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/summernote-lite.js.map +1 -0
  154. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/summernote-lite.min.css +1 -0
  155. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/summernote-lite.min.js +3 -0
  156. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/summernote-lite.min.js.LICENSE.txt +1 -0
  157. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/summernote-lite.min.js.map +1 -0
  158. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/summernote.css +13 -0
  159. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/summernote.js +10228 -0
  160. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/summernote.js.map +1 -0
  161. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/summernote.min.css +1 -0
  162. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/summernote.min.js +3 -0
  163. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/summernote.min.js.LICENSE.txt +1 -0
  164. data/app/assets/javascripts/ish_manager/vendor/trash/summernote-0.8.18-dist/summernote.min.js.map +1 -0
  165. data/app/assets/javascripts/ish_manager/vendor/trash/tinymce-insert-image-plugin.js +103 -0
  166. data/app/assets/stylesheets/ish_manager/application.scss +4 -4
  167. data/app/assets/stylesheets/ish_manager/email_conversations.scss +15 -14
  168. data/app/assets/stylesheets/ish_manager/vendor/summernote-bs4.min.css +1 -0
  169. data/app/controllers/ish_manager/events_controller.rb +1 -1
  170. data/app/controllers/ish_manager/newsitems_controller.rb +6 -4
  171. data/app/views/ish_manager/application/_main_header_admin.haml +2 -2
  172. data/app/views/ish_manager/email_contexts/_form.haml +1 -1
  173. data/app/views/ish_manager/email_conversations/show.haml +19 -10
  174. data/app/views/ish_manager/email_templates/_form.haml +1 -1
  175. data/app/views/ish_manager/galleries/_menu.haml +2 -4
  176. data/app/views/ish_manager/photos/_meta.haml +0 -2
  177. data/app/views/ish_manager/photos/show.haml +5 -1
  178. data/app/views/layouts/ish_manager/application.haml +3 -2
  179. metadata +168 -6
  180. /data/app/assets/javascripts/ish_manager/vendor/{bootstrap.min.js → trash/bootstrap.min.js} +0 -0
  181. /data/app/assets/javascripts/ish_manager/vendor/{jquery-3.2.1.min.js → unused/jquery-3.2.1.min.js} +0 -0
  182. /data/app/assets/javascripts/ish_manager/vendor/{jquery-3.6.0.min.js → unused/jquery-3.6.0.min.js} +0 -0
  183. /data/app/assets/stylesheets/ish_manager/{jquery-ui.css → vendor/jquery-ui.css} +0 -0
@@ -0,0 +1,291 @@
1
+ (function(factory) {
2
+ if (typeof define === 'function' && define.amd) {
3
+ // AMD. Register as an anonymous module.
4
+ define(['jquery'], factory);
5
+ } else if (typeof module === 'object' && module.exports) {
6
+ // Node/CommonJS
7
+ module.exports = factory(require('jquery'));
8
+ } else {
9
+ // Browser globals
10
+ factory(window.jQuery);
11
+ }
12
+ }(function($) {
13
+ // pull in some summernote core functions
14
+ var ui = $.summernote.ui;
15
+ var dom = $.summernote.dom;
16
+
17
+ // define the popover plugin
18
+ var DataBasicPlugin = function(context) {
19
+ var self = this;
20
+ var options = context.options;
21
+ var lang = options.langInfo;
22
+
23
+ self.icon = '<i class="fa fa-object-group"/>';
24
+
25
+ // add context menu button for dialog
26
+ context.memo('button.databasic', function() {
27
+ return ui.button({
28
+ contents: self.icon,
29
+ tooltip: lang.databasic.insert,
30
+ click: context.createInvokeHandler('databasic.showDialog'),
31
+ }).render();
32
+ });
33
+
34
+ // add popover edit button
35
+ context.memo('button.databasicDialog', function() {
36
+ return ui.button({
37
+ contents: self.icon,
38
+ tooltip: lang.databasic.edit,
39
+ click: context.createInvokeHandler('databasic.showDialog'),
40
+ }).render();
41
+ });
42
+
43
+ // add popover size buttons
44
+ context.memo('button.databasicSize100', function() {
45
+ return ui.button({
46
+ contents: '<span class="note-fontsize-10">100%</span>',
47
+ tooltip: lang.image.resizeFull,
48
+ click: context.createInvokeHandler('editor.resize', '1'),
49
+ }).render();
50
+ });
51
+ context.memo('button.databasicSize50', function() {
52
+ return ui.button({
53
+ contents: '<span class="note-fontsize-10">50%</span>',
54
+ tooltip: lang.image.resizeHalf,
55
+ click: context.createInvokeHandler('editor.resize', '0.5'),
56
+ }).render();
57
+ });
58
+ context.memo('button.databasicSize25', function() {
59
+ return ui.button({
60
+ contents: '<span class="note-fontsize-10">25%</span>',
61
+ tooltip: lang.image.resizeQuarter,
62
+ click: context.createInvokeHandler('editor.resize', '0.25'),
63
+ }).render();
64
+ });
65
+
66
+ self.events = {
67
+ 'summernote.init': function(we, e) {
68
+ // update existing containers
69
+ $('data.ext-databasic', e.editable).each(function() { self.setContent($(this)); });
70
+ // TODO: make this an undo snapshot...
71
+ },
72
+ 'summernote.keyup summernote.mouseup summernote.change summernote.scroll': function() {
73
+ self.update();
74
+ },
75
+ 'summernote.dialog.shown': function() {
76
+ self.hidePopover();
77
+ },
78
+ };
79
+
80
+ self.initialize = function() {
81
+ // create dialog markup
82
+ var $container = options.dialogsInBody ? $(document.body) : context.layoutInfo.editor;
83
+
84
+ var body = '<div class="form-group row-fluid">' +
85
+ '<label>' + lang.databasic.testLabel + '</label>' +
86
+ '<input class="ext-databasic-test form-control" type="text" />' +
87
+ '</div>';
88
+ var footer = '<button href="#" class="btn btn-primary ext-databasic-save">' + lang.databasic.insert + '</button>';
89
+
90
+ self.$dialog = ui.dialog({
91
+ title: lang.databasic.name,
92
+ fade: options.dialogsFade,
93
+ body: body,
94
+ footer: footer,
95
+ }).render().appendTo($container);
96
+
97
+ // create popover
98
+ self.$popover = ui.popover({
99
+ className: 'ext-databasic-popover',
100
+ }).render().appendTo('body');
101
+ var $content = self.$popover.find('.popover-content');
102
+
103
+ context.invoke('buttons.build', $content, options.popover.databasic);
104
+ };
105
+
106
+ self.destroy = function() {
107
+ self.$popover.remove();
108
+ self.$popover = null;
109
+ self.$dialog.remove();
110
+ self.$dialog = null;
111
+ };
112
+
113
+ self.update = function() {
114
+ // Prevent focusing on editable when invoke('code') is executed
115
+ if (!context.invoke('editor.hasFocus')) {
116
+ self.hidePopover();
117
+ return;
118
+ }
119
+
120
+ var rng = context.invoke('editor.createRange');
121
+ var visible = false;
122
+
123
+ if (rng.isOnData()) {
124
+ var $data = $(rng.sc).closest('data.ext-databasic');
125
+
126
+ if ($data.length) {
127
+ var pos = dom.posFromPlaceholder($data[0]);
128
+
129
+ self.$popover.css({
130
+ display: 'block',
131
+ left: pos.left,
132
+ top: pos.top,
133
+ });
134
+
135
+ // save editor target to let size buttons resize the container
136
+ context.invoke('editor.saveTarget', $data[0]);
137
+
138
+ visible = true;
139
+ }
140
+ }
141
+
142
+ // hide if not visible
143
+ if (!visible) {
144
+ self.hidePopover();
145
+ }
146
+ };
147
+
148
+ self.hidePopover = function() {
149
+ self.$popover.hide();
150
+ };
151
+
152
+ // define plugin dialog
153
+ self.getInfo = function() {
154
+ var rng = context.invoke('editor.createRange');
155
+
156
+ if (rng.isOnData()) {
157
+ var $data = $(rng.sc).closest('data.ext-databasic');
158
+
159
+ if ($data.length) {
160
+ // Get the first node on range(for edit).
161
+ return {
162
+ node: $data,
163
+ test: $data.attr('data-test'),
164
+ };
165
+ }
166
+ }
167
+
168
+ return {};
169
+ };
170
+
171
+ self.setContent = function($node) {
172
+ $node.html('<p contenteditable="false">' + self.icon + ' ' + lang.databasic.name + ': ' +
173
+ $node.attr('data-test') + '</p>');
174
+ };
175
+
176
+ self.updateNode = function(info) {
177
+ self.setContent(info.node
178
+ .attr('data-test', info.test));
179
+ };
180
+
181
+ self.createNode = function(info) {
182
+ var $node = $('<data class="ext-databasic"></data>');
183
+
184
+ if ($node) {
185
+ // save node to info structure
186
+ info.node = $node;
187
+ // insert node into editor dom
188
+ context.invoke('editor.insertNode', $node[0]);
189
+ }
190
+
191
+ return $node;
192
+ };
193
+
194
+ self.showDialog = function() {
195
+ var info = self.getInfo();
196
+ var newNode = !info.node;
197
+ context.invoke('editor.saveRange');
198
+
199
+ self
200
+ .openDialog(info)
201
+ .then(function(dialogInfo) {
202
+ // [workaround] hide dialog before restore range for IE range focus
203
+ ui.hideDialog(self.$dialog);
204
+ context.invoke('editor.restoreRange');
205
+
206
+ // insert a new node
207
+ if (newNode) {
208
+ self.createNode(info);
209
+ }
210
+
211
+ // update info with dialog info
212
+ $.extend(info, dialogInfo);
213
+
214
+ self.updateNode(info);
215
+ })
216
+ .fail(function() {
217
+ context.invoke('editor.restoreRange');
218
+ });
219
+ };
220
+
221
+ self.openDialog = function(info) {
222
+ return $.Deferred(function(deferred) {
223
+ var $inpTest = self.$dialog.find('.ext-databasic-test');
224
+ var $saveBtn = self.$dialog.find('.ext-databasic-save');
225
+ var onKeyup = function(event) {
226
+ if (event.keyCode === 13) {
227
+ $saveBtn.trigger('click');
228
+ }
229
+ };
230
+
231
+ ui.onDialogShown(self.$dialog, function() {
232
+ context.triggerEvent('dialog.shown');
233
+
234
+ $inpTest.val(info.test).on('input', function() {
235
+ ui.toggleBtn($saveBtn, $inpTest.val());
236
+ }).trigger('focus').on('keyup', onKeyup);
237
+
238
+ $saveBtn
239
+ .text(info.node ? lang.databasic.edit : lang.databasic.insert)
240
+ .click(function(event) {
241
+ event.preventDefault();
242
+
243
+ deferred.resolve({ test: $inpTest.val() });
244
+ });
245
+
246
+ // init save button
247
+ ui.toggleBtn($saveBtn, $inpTest.val());
248
+ });
249
+
250
+ ui.onDialogHidden(self.$dialog, function() {
251
+ $inpTest.off('input keyup');
252
+ $saveBtn.off('click');
253
+
254
+ if (deferred.state() === 'pending') {
255
+ deferred.reject();
256
+ }
257
+ });
258
+
259
+ ui.showDialog(self.$dialog);
260
+ });
261
+ };
262
+ };
263
+
264
+ // Extends summernote
265
+ $.extend(true, $.summernote, {
266
+ plugins: {
267
+ databasic: DataBasicPlugin,
268
+ },
269
+
270
+ options: {
271
+ popover: {
272
+ databasic: [
273
+ ['databasic', ['databasicDialog', 'databasicSize100', 'databasicSize50', 'databasicSize25']],
274
+ ],
275
+ },
276
+ },
277
+
278
+ // add localization texts
279
+ lang: {
280
+ 'en-US': {
281
+ databasic: {
282
+ name: 'Basic Data Container',
283
+ insert: 'insert basic data container',
284
+ edit: 'edit basic data container',
285
+ testLabel: 'test input',
286
+ },
287
+ },
288
+ },
289
+
290
+ });
291
+ }));
@@ -0,0 +1,82 @@
1
+ (function(factory) {
2
+ if (typeof define === 'function' && define.amd) {
3
+ // AMD. Register as an anonymous module.
4
+ define(['jquery'], factory);
5
+ } else if (typeof module === 'object' && module.exports) {
6
+ // Node/CommonJS
7
+ module.exports = factory(require('jquery'));
8
+ } else {
9
+ // Browser globals
10
+ factory(window.jQuery);
11
+ }
12
+ }(function($) {
13
+ // Extends plugins for adding hello.
14
+ // - plugin is external module for customizing.
15
+ $.extend($.summernote.plugins, {
16
+ /**
17
+ * @param {Object} context - context object has status of editor.
18
+ */
19
+ 'hello': function(context) {
20
+ var self = this;
21
+
22
+ // ui has renders to build ui elements.
23
+ // - you can create a button with `ui.button`
24
+ var ui = $.summernote.ui;
25
+
26
+ // add hello button
27
+ context.memo('button.hello', function() {
28
+ // create button
29
+ var button = ui.button({
30
+ contents: '<i class="fa fa-child"/> Hello',
31
+ tooltip: 'hello',
32
+ click: function() {
33
+ self.$panel.show();
34
+ self.$panel.hide(500);
35
+ // invoke insertText method with 'hello' on editor module.
36
+ context.invoke('editor.insertText', 'hello');
37
+ },
38
+ });
39
+
40
+ // create jQuery object from button instance.
41
+ var $hello = button.render();
42
+ return $hello;
43
+ });
44
+
45
+ // This events will be attached when editor is initialized.
46
+ this.events = {
47
+ // This will be called after modules are initialized.
48
+ 'summernote.init': function(we, e) {
49
+ // eslint-disable-next-line
50
+ console.log('summernote initialized', we, e);
51
+ },
52
+ // This will be called when user releases a key on editable.
53
+ 'summernote.keyup': function(we, e) {
54
+ // eslint-disable-next-line
55
+ console.log('summernote keyup', we, e);
56
+ },
57
+ };
58
+
59
+ // This method will be called when editor is initialized by $('..').summernote();
60
+ // You can create elements for plugin
61
+ this.initialize = function() {
62
+ this.$panel = $('<div class="hello-panel"/>').css({
63
+ position: 'absolute',
64
+ width: 100,
65
+ height: 100,
66
+ left: '50%',
67
+ top: '50%',
68
+ background: 'red',
69
+ }).hide();
70
+
71
+ this.$panel.appendTo('body');
72
+ };
73
+
74
+ // This methods will be called when editor is destroyed by $('..').summernote('destroy');
75
+ // You should remove elements on `initialize`.
76
+ this.destroy = function() {
77
+ this.$panel.remove();
78
+ this.$panel = null;
79
+ };
80
+ },
81
+ });
82
+ }));
@@ -0,0 +1,311 @@
1
+ (function(factory) {
2
+ if (typeof define === 'function' && define.amd) {
3
+ // AMD. Register as an anonymous module.
4
+ define(['jquery'], factory);
5
+ } else if (typeof module === 'object' && module.exports) {
6
+ // Node/CommonJS
7
+ module.exports = factory(require('jquery'));
8
+ } else {
9
+ // Browser globals
10
+ factory(window.jQuery);
11
+ }
12
+ }(function($) {
13
+ $.extend($.summernote.plugins, {
14
+ 'specialchars': function(context) {
15
+ var self = this;
16
+ var ui = $.summernote.ui;
17
+
18
+ var $editor = context.layoutInfo.editor;
19
+ var options = context.options;
20
+ var lang = options.langInfo;
21
+
22
+ var KEY = {
23
+ UP: 38,
24
+ DOWN: 40,
25
+ LEFT: 37,
26
+ RIGHT: 39,
27
+ ENTER: 13,
28
+ };
29
+ var COLUMN_LENGTH = 15;
30
+ var COLUMN_WIDTH = 35;
31
+
32
+ var currentColumn = 0;
33
+ var currentRow = 0;
34
+ var totalColumn = 0;
35
+ var totalRow = 0;
36
+
37
+ // special characters data set
38
+ var specialCharDataSet = [
39
+ '&quot;', '&amp;', '&lt;', '&gt;', '&iexcl;', '&cent;',
40
+ '&pound;', '&curren;', '&yen;', '&brvbar;', '&sect;',
41
+ '&uml;', '&copy;', '&ordf;', '&laquo;', '&not;',
42
+ '&reg;', '&macr;', '&deg;', '&plusmn;', '&sup2;',
43
+ '&sup3;', '&acute;', '&micro;', '&para;', '&middot;',
44
+ '&cedil;', '&sup1;', '&ordm;', '&raquo;', '&frac14;',
45
+ '&frac12;', '&frac34;', '&iquest;', '&times;', '&divide;',
46
+ '&fnof;', '&circ;', '&tilde;', '&ndash;', '&mdash;',
47
+ '&lsquo;', '&rsquo;', '&sbquo;', '&ldquo;', '&rdquo;',
48
+ '&bdquo;', '&dagger;', '&Dagger;', '&bull;', '&hellip;',
49
+ '&permil;', '&prime;', '&Prime;', '&lsaquo;', '&rsaquo;',
50
+ '&oline;', '&frasl;', '&euro;', '&image;', '&weierp;',
51
+ '&real;', '&trade;', '&alefsym;', '&larr;', '&uarr;',
52
+ '&rarr;', '&darr;', '&harr;', '&crarr;', '&lArr;',
53
+ '&uArr;', '&rArr;', '&dArr;', '&hArr;', '&forall;',
54
+ '&part;', '&exist;', '&empty;', '&nabla;', '&isin;',
55
+ '&notin;', '&ni;', '&prod;', '&sum;', '&minus;',
56
+ '&lowast;', '&radic;', '&prop;', '&infin;', '&ang;',
57
+ '&and;', '&or;', '&cap;', '&cup;', '&int;',
58
+ '&there4;', '&sim;', '&cong;', '&asymp;', '&ne;',
59
+ '&equiv;', '&le;', '&ge;', '&sub;', '&sup;',
60
+ '&nsub;', '&sube;', '&supe;', '&oplus;', '&otimes;',
61
+ '&perp;', '&sdot;', '&lceil;', '&rceil;', '&lfloor;',
62
+ '&rfloor;', '&loz;', '&spades;', '&clubs;', '&hearts;',
63
+ '&diams;',
64
+ ];
65
+
66
+ context.memo('button.specialchars', function() {
67
+ return ui.button({
68
+ contents: '<i class="fa fa-font fa-flip-vertical">',
69
+ tooltip: lang.specialChar.specialChar,
70
+ click: function() {
71
+ self.show();
72
+ },
73
+ }).render();
74
+ });
75
+
76
+ /**
77
+ * Make Special Characters Table
78
+ *
79
+ * @member plugin.specialChar
80
+ * @private
81
+ * @return {jQuery}
82
+ */
83
+ this.makeSpecialCharSetTable = function() {
84
+ var $table = $('<table/>');
85
+ $.each(specialCharDataSet, function(idx, text) {
86
+ var $td = $('<td/>').addClass('note-specialchar-node');
87
+ var $tr = (idx % COLUMN_LENGTH === 0) ? $('<tr/>') : $table.find('tr').last();
88
+
89
+ var $button = ui.button({
90
+ callback: function($node) {
91
+ $node.html(text);
92
+ $node.attr('title', text);
93
+ $node.attr('data-value', encodeURIComponent(text));
94
+ $node.css({
95
+ width: COLUMN_WIDTH,
96
+ 'margin-right': '2px',
97
+ 'margin-bottom': '2px',
98
+ });
99
+ },
100
+ }).render();
101
+
102
+ $td.append($button);
103
+
104
+ $tr.append($td);
105
+ if (idx % COLUMN_LENGTH === 0) {
106
+ $table.append($tr);
107
+ }
108
+ });
109
+
110
+ totalRow = $table.find('tr').length;
111
+ totalColumn = COLUMN_LENGTH;
112
+
113
+ return $table;
114
+ };
115
+
116
+ this.initialize = function() {
117
+ var $container = options.dialogsInBody ? $(document.body) : $editor;
118
+
119
+ var body = '<div class="form-group row-fluid">' + this.makeSpecialCharSetTable()[0].outerHTML + '</div>';
120
+
121
+ this.$dialog = ui.dialog({
122
+ title: lang.specialChar.select,
123
+ body: body,
124
+ }).render().appendTo($container);
125
+ };
126
+
127
+ this.show = function() {
128
+ var text = context.invoke('editor.getSelectedText');
129
+ context.invoke('editor.saveRange');
130
+ this.showSpecialCharDialog(text).then(function(selectChar) {
131
+ context.invoke('editor.restoreRange');
132
+
133
+ // build node
134
+ var $node = $('<span></span>').html(selectChar)[0];
135
+
136
+ if ($node) {
137
+ // insert video node
138
+ context.invoke('editor.insertNode', $node);
139
+ }
140
+ }).fail(function() {
141
+ context.invoke('editor.restoreRange');
142
+ });
143
+ };
144
+
145
+ /**
146
+ * show image dialog
147
+ *
148
+ * @param {jQuery} $dialog
149
+ * @return {Promise}
150
+ */
151
+ this.showSpecialCharDialog = function(text) {
152
+ return $.Deferred(function(deferred) {
153
+ var $specialCharDialog = self.$dialog;
154
+ var $specialCharNode = $specialCharDialog.find('.note-specialchar-node');
155
+ var $selectedNode = null;
156
+ var ARROW_KEYS = [KEY.UP, KEY.DOWN, KEY.LEFT, KEY.RIGHT];
157
+ var ENTER_KEY = KEY.ENTER;
158
+
159
+ function addActiveClass($target) {
160
+ if (!$target) {
161
+ return;
162
+ }
163
+ $target.find('button').addClass('active');
164
+ $selectedNode = $target;
165
+ }
166
+
167
+ function removeActiveClass($target) {
168
+ $target.find('button').removeClass('active');
169
+ $selectedNode = null;
170
+ }
171
+
172
+ // find next node
173
+ function findNextNode(row, column) {
174
+ var findNode = null;
175
+ $.each($specialCharNode, function(idx, $node) {
176
+ var findRow = Math.ceil((idx + 1) / COLUMN_LENGTH);
177
+ var findColumn = ((idx + 1) % COLUMN_LENGTH === 0) ? COLUMN_LENGTH : (idx + 1) % COLUMN_LENGTH;
178
+ if (findRow === row && findColumn === column) {
179
+ findNode = $node;
180
+ return false;
181
+ }
182
+ });
183
+ return $(findNode);
184
+ }
185
+
186
+ function arrowKeyHandler(keyCode) {
187
+ // left, right, up, down key
188
+ var $nextNode;
189
+ var lastRowColumnLength = $specialCharNode.length % totalColumn;
190
+
191
+ if (KEY.LEFT === keyCode) {
192
+ if (currentColumn > 1) {
193
+ currentColumn = currentColumn - 1;
194
+ } else if (currentRow === 1 && currentColumn === 1) {
195
+ currentColumn = lastRowColumnLength;
196
+ currentRow = totalRow;
197
+ } else {
198
+ currentColumn = totalColumn;
199
+ currentRow = currentRow - 1;
200
+ }
201
+ } else if (KEY.RIGHT === keyCode) {
202
+ if (currentRow === totalRow && lastRowColumnLength === currentColumn) {
203
+ currentColumn = 1;
204
+ currentRow = 1;
205
+ } else if (currentColumn < totalColumn) {
206
+ currentColumn = currentColumn + 1;
207
+ } else {
208
+ currentColumn = 1;
209
+ currentRow = currentRow + 1;
210
+ }
211
+ } else if (KEY.UP === keyCode) {
212
+ if (currentRow === 1 && lastRowColumnLength < currentColumn) {
213
+ currentRow = totalRow - 1;
214
+ } else {
215
+ currentRow = currentRow - 1;
216
+ }
217
+ } else if (KEY.DOWN === keyCode) {
218
+ currentRow = currentRow + 1;
219
+ }
220
+
221
+ if (currentRow === totalRow && currentColumn > lastRowColumnLength) {
222
+ currentRow = 1;
223
+ } else if (currentRow > totalRow) {
224
+ currentRow = 1;
225
+ } else if (currentRow < 1) {
226
+ currentRow = totalRow;
227
+ }
228
+
229
+ $nextNode = findNextNode(currentRow, currentColumn);
230
+
231
+ if ($nextNode) {
232
+ removeActiveClass($selectedNode);
233
+ addActiveClass($nextNode);
234
+ }
235
+ }
236
+
237
+ function enterKeyHandler() {
238
+ if (!$selectedNode) {
239
+ return;
240
+ }
241
+
242
+ deferred.resolve(decodeURIComponent($selectedNode.find('button').attr('data-value')));
243
+ $specialCharDialog.modal('hide');
244
+ }
245
+
246
+ function keyDownEventHandler(event) {
247
+ event.preventDefault();
248
+ var keyCode = event.keyCode;
249
+ if (keyCode === undefined || keyCode === null) {
250
+ return;
251
+ }
252
+ // check arrowKeys match
253
+ if (ARROW_KEYS.indexOf(keyCode) > -1) {
254
+ if ($selectedNode === null) {
255
+ addActiveClass($specialCharNode.eq(0));
256
+ currentColumn = 1;
257
+ currentRow = 1;
258
+ return;
259
+ }
260
+ arrowKeyHandler(keyCode);
261
+ } else if (keyCode === ENTER_KEY) {
262
+ enterKeyHandler();
263
+ }
264
+ return false;
265
+ }
266
+
267
+ // remove class
268
+ removeActiveClass($specialCharNode);
269
+
270
+ // find selected node
271
+ if (text) {
272
+ for (var i = 0; i < $specialCharNode.length; i++) {
273
+ var $checkNode = $($specialCharNode[i]);
274
+ if ($checkNode.text() === text) {
275
+ addActiveClass($checkNode);
276
+ currentRow = Math.ceil((i + 1) / COLUMN_LENGTH);
277
+ currentColumn = (i + 1) % COLUMN_LENGTH;
278
+ }
279
+ }
280
+ }
281
+
282
+ ui.onDialogShown(self.$dialog, function() {
283
+ $(document).on('keydown', keyDownEventHandler);
284
+
285
+ self.$dialog.find('button').tooltip();
286
+
287
+ $specialCharNode.on('click', function(event) {
288
+ event.preventDefault();
289
+ deferred.resolve(decodeURIComponent($(event.currentTarget).find('button').attr('data-value')));
290
+ ui.hideDialog(self.$dialog);
291
+ });
292
+ });
293
+
294
+ ui.onDialogHidden(self.$dialog, function() {
295
+ $specialCharNode.off('click');
296
+
297
+ self.$dialog.find('button').tooltip('destroy');
298
+
299
+ $(document).off('keydown', keyDownEventHandler);
300
+
301
+ if (deferred.state() === 'pending') {
302
+ deferred.reject();
303
+ }
304
+ });
305
+
306
+ ui.showDialog(self.$dialog);
307
+ });
308
+ };
309
+ },
310
+ });
311
+ }));