wysiwyg.php 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Tiny, opensource, Bootstrap WYSIWYG rich text editor from MindMup</title>
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  7. <meta name="keywords" content="opensource rich wysiwyg text editor jquery bootstrap execCommand html5" />
  8. <meta name="description" content="This tiny jQuery Bootstrap WYSIWYG plugin turns any DIV into a HTML5 rich text editor" />
  9. <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
  10. <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
  11. <!-- jQuery first, then Popper.js, then Bootstrap JS -->
  12. <script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
  13. <script type="text/javascript" src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script>
  14. <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
  15. <script type="text/javascript" src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
  16. <script type="text/javascript" src="https://use.fontawesome.com/1e2844bb90.js"></script>
  17. <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css" integrity="sha384-gfdkjb5BdAXd+lj+gudLWI+BXq4IuLW5IT+brZEZsLFm++aCMlF1V92rMkPaX4PP" crossorigin="anonymous" />
  18. <link rel="stylesheet" type="text/css" href="/client-assets/weather-icons/css/weather-icons.min.css?version=1.16" />s
  19. </head>
  20. <body>
  21. <?php
  22. $servername = "localhost";
  23. $username = "root";
  24. $password = "R3M0T31";
  25. $dbname = "cropmonitor";
  26. // Create connection
  27. $conn = new mysqli($servername, $username, $password, $dbname);
  28. // Check connection
  29. if ($conn->connect_error) {
  30. die("Connection failed: " . $conn->connect_error);
  31. }
  32. $sql = "UPDATE records SET comment ='".$_POST['test']."' WHERE id='1'";
  33. if (mysqli_query($conn, $sql)) {
  34. }
  35. echo $_POST['test'];
  36. ?>
  37. <div class="container">
  38. <div class="hero-unit">
  39. <div id="alerts"></div>
  40. <div class="btn-toolbar" data-role="editor-toolbar" data-target="#editor">
  41. <div class="btn-group">
  42. <a class="btn dropdown-toggle" data-toggle="dropdown" title="Font"><i class="icon-font"></i><b class="caret"></b></a>
  43. <ul class="dropdown-menu">
  44. </ul>
  45. </div>
  46. <div class="btn-group">
  47. <a class="btn dropdown-toggle" data-toggle="dropdown" title="Font Size"><i class="icon-text-height"></i>&nbsp;<b class="caret"></b></a>
  48. <ul class="dropdown-menu">
  49. <li>
  50. <a data-edit="fontSize 5">
  51. <font size="5">Huge</font>
  52. </a>
  53. </li>
  54. <li>
  55. <a data-edit="fontSize 3">
  56. <font size="3">Normal</font>
  57. </a>
  58. </li>
  59. <li>
  60. <a data-edit="fontSize 1">
  61. <font size="1">Small</font>
  62. </a>
  63. </li>
  64. </ul>
  65. </div>
  66. <div class="btn-group">
  67. <a class="btn" data-edit="bold" title="Bold (Ctrl/Cmd+B)"><i class="icon-bold"></i></a>
  68. <a class="btn" data-edit="italic" title="Italic (Ctrl/Cmd+I)"><i class="icon-italic"></i></a>
  69. <a class="btn" data-edit="strikethrough" title="Strikethrough"><i class="icon-strikethrough"></i></a>
  70. <a class="btn" data-edit="underline" title="Underline (Ctrl/Cmd+U)"><i class="icon-underline"></i></a>
  71. </div>
  72. <div class="btn-group">
  73. <a class="btn" data-edit="insertunorderedlist" title="Bullet list"><i class="icon-list-ul"></i></a>
  74. <a class="btn" data-edit="insertorderedlist" title="Number list"><i class="icon-list-ol"></i></a>
  75. <a class="btn" data-edit="outdent" title="Reduce indent (Shift+Tab)"><i class="icon-indent-left"></i></a>
  76. <a class="btn" data-edit="indent" title="Indent (Tab)"><i class="icon-indent-right"></i></a>
  77. </div>
  78. <div class="btn-group">
  79. <a class="btn" data-edit="justifyleft" title="Align Left (Ctrl/Cmd+L)"><i class="icon-align-left"></i></a>
  80. <a class="btn" data-edit="justifycenter" title="Center (Ctrl/Cmd+E)"><i class="icon-align-center"></i></a>
  81. <a class="btn" data-edit="justifyright" title="Align Right (Ctrl/Cmd+R)"><i class="icon-align-right"></i></a>
  82. <a class="btn" data-edit="justifyfull" title="Justify (Ctrl/Cmd+J)"><i class="icon-align-justify"></i></a>
  83. </div>
  84. <div class="btn-group">
  85. <a class="btn dropdown-toggle" data-toggle="dropdown" title="Hyperlink"><i class="icon-link"></i></a>
  86. <div class="dropdown-menu input-append">
  87. <input class="span2" placeholder="URL" type="text" data-edit="createLink" />
  88. <button class="btn" type="button">Add</button>
  89. </div>
  90. <a class="btn" data-edit="unlink" title="Remove Hyperlink"><i class="icon-cut"></i></a>
  91. </div>
  92. <div class="btn-group">
  93. <a class="btn" title="Insert picture (or just drag & drop)" id="pictureBtn"><i class="icon-picture"></i></a>
  94. <input type="file" data-role="magic-overlay" data-target="#pictureBtn" data-edit="insertImage" />
  95. </div>
  96. <div class="btn-group">
  97. <a class="btn" data-edit="undo" title="Undo (Ctrl/Cmd+Z)"><i class="icon-undo"></i></a>
  98. <a class="btn" data-edit="redo" title="Redo (Ctrl/Cmd+Y)"><i class="icon-repeat"></i></a>
  99. </div>
  100. <input type="text" data-edit="inserttext" id="voiceBtn" x-webkit-speech="">
  101. </div>
  102. <form method="post" action="wysiwyg.php">
  103. <div id="editor" name="test">
  104. <textarea>
  105. <?php
  106. $sql = "SELECT comment FROM records WHERE id='1'";
  107. $result = $conn->query($sql);
  108. while($row = $result->fetch_assoc()) {
  109. echo $row["comment"];
  110. }
  111. ?>
  112. </textarea>
  113. </div>
  114. <button class="btn btn-default" type="submit">Send Post</button>
  115. </form>
  116. </div>
  117. </div>
  118. <script>
  119. $(function() {
  120. function initToolbarBootstrapBindings() {
  121. var fonts = ['Serif', 'Sans', 'Arial', 'Arial Black', 'Courier',
  122. 'Courier New', 'Comic Sans MS', 'Helvetica', 'Impact', 'Lucida Grande', 'Lucida Sans', 'Tahoma', 'Times',
  123. 'Times New Roman', 'Verdana'
  124. ],
  125. fontTarget = $('[title=Font]').siblings('.dropdown-menu');
  126. $.each(fonts, function(idx, fontName) {
  127. fontTarget.append($('<li><a data-edit="fontName ' + fontName + '" style="font-family:\'' + fontName + '\'">' + fontName + '</a></li>'));
  128. });
  129. $('a[title]').tooltip({
  130. container: 'body'
  131. });
  132. $('.dropdown-menu input').click(function() {
  133. return false;
  134. })
  135. .change(function() {
  136. $(this).parent('.dropdown-menu').siblings('.dropdown-toggle').dropdown('toggle');
  137. })
  138. .keydown('esc', function() {
  139. this.value = '';
  140. $(this).change();
  141. });
  142. $('[data-role=magic-overlay]').each(function() {
  143. var overlay = $(this),
  144. target = $(overlay.data('target'));
  145. overlay.css('opacity', 0).css('position', 'absolute').offset(target.offset()).width(target.outerWidth()).height(target.outerHeight());
  146. });
  147. if ("onwebkitspeechchange" in document.createElement("input")) {
  148. var editorOffset = $('#editor').offset();
  149. $('#voiceBtn').css('position', 'absolute').offset({
  150. top: editorOffset.top,
  151. left: editorOffset.left + $('#editor').innerWidth() - 35
  152. });
  153. } else {
  154. $('#voiceBtn').hide();
  155. }
  156. };
  157. function showErrorAlert(reason, detail) {
  158. var msg = '';
  159. if (reason === 'unsupported-file-type') {
  160. msg = "Unsupported format " + detail;
  161. } else {
  162. console.log("error uploading file", reason, detail);
  163. }
  164. $('<div class="alert"> <button type="button" class="close" data-dismiss="alert">&times;</button>' +
  165. '<strong>File upload error</strong> ' + msg + ' </div>').prependTo('#alerts');
  166. };
  167. initToolbarBootstrapBindings();
  168. $('#editor').wysiwyg({
  169. fileUploadError: showErrorAlert
  170. });
  171. window.prettyPrint && prettyPrint();
  172. });
  173. </script>
  174. </html>