Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
- <link rel="stylesheet" href="/resources/demos/style.css">
- <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
- <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
- <% @y = [] %>
- <% User.all.each do |user| %>
- <% x = user.username %><br>
- <% if x %>
- <% @y << "@" + x %>
- <% end %>
- <% end %>
- <% @y %>
- <style type="text/css">
- /*the container must be positioned relative:*/
- .autocomplete {
- position: relative;
- display: inline-block;
- }
- input {
- border: 1px solid transparent;
- background-color: #f1f1f1;
- padding: 10px;
- font-size: 16px;
- }
- input[type=text] {
- background-color: #f1f1f1;
- width: 100%;
- }
- .autocomplete-items {
- position: absolute;
- border: 1px solid #d4d4d4;
- border-bottom: none;
- border-top: none;
- z-index: 99;
- /*position the autocomplete items to be the same width as the container:*/
- top: 100%;
- left: 0;
- right: 0;
- }
- .autocomplete-items div {
- padding: 10px;
- cursor: pointer;
- background-color: #fff;
- border-bottom: 1px solid #d4d4d4;
- }
- /*when hovering an item:*/
- .autocomplete-items div:hover {
- background-color: #e9e9e9;
- }
- /*when navigating through the items using the arrow keys:*/
- .autocomplete-active {
- background-color: DodgerBlue !important;
- color: #ffffff;
- }
- </style>
- <p id="notice"><%= notice %></p>
- <div class="course-show-container">
- <div class="course-show-main">
- <div class="course-show-head">
- <p>
- <h1>
- <%= @course.name %>
- </h1>
- <h6>- <%= rand(1..50) %> upvotes</h6>
- </p>
- <p>
- <%= @course.tagline %>
- </p>
- <p>
- Hunted by:
- <%= User.find(@course.user_id).id %>
- </p>
- <div class="course-show-url-card">
- <div class="course-show-url-img">
- <!-- <img src="http://unsplash.it/300/200" class="course-url-image"> -->
- </div>
- <div class="course-show-url-bottom">
- <div class="course-show-url-button">
- <p> Visit Website </p>
- <a href="#{@course.url}"> <%= @course.name %> </a>
- </div>
- <div class="course-show-url-infos">
- <p></p>
- </div>
- </div>
- </div>
- <p>
- <strong>Category:</strong>
- <%= @course.category %>
- </p>
- <p>
- <strong>Content:</strong>
- <%= @course.content.html_safe %>
- </p>
- <p>
- <strong>Note:</strong>
- <%= @course.note %>
- </p>
- <h3>Comments</h3>
- <%= form_for [@course, Comment.new], autocomplete: "off" do |f| %>
- <div class="autocomplete">
- <%= f.text_area :content, placeholder: "Add a comment", id: "myInput" %><br/>
- </div>
- <%= f.submit "Add Comment" %>
- <% end %>
- <ul>
- <%= render(partial: 'comments/comment', collection: @course.comments) %>
- </ul>
- <%= link_to 'Edit', edit_course_path(@course) if policy(@course).edit? %>
- <%= link_to 'Back', courses_path %>
- </div>
- </div>
- </div>
- <script>
- function autocomplete(inp, arr) {
- /*the autocomplete function takes two arguments,
- the text field element and an array of possible autocompleted values:*/
- var currentFocus;
- /*execute a function when someone writes in the text field:*/
- inp.addEventListener("input", function(e) {
- var a, b, i, val = this.value;
- /*close any already open lists of autocompleted values*/
- closeAllLists();
- if (!val) { return false;}
- currentFocus = -1;
- /*create a DIV element that will contain the items (values):*/
- a = document.createElement("DIV");
- a.setAttribute("id", this.id + "autocomplete-list");
- a.setAttribute("class", "autocomplete-items");
- /*append the DIV element as a child of the autocomplete container:*/
- this.parentNode.appendChild(a);
- /*for each item in the array...*/
- for (i = 0; i < arr.length; i++) {
- /*check if the item starts with the same letters as the text field value:*/
- if (arr[i].substr(0, val.length).toUpperCase() == val.toUpperCase()) {
- /*create a DIV element for each matching element:*/
- b = document.createElement("DIV");
- /*make the matching letters bold:*/
- b.innerHTML = "<strong>" + arr[i].substr(0, val.length) + "</strong>";
- b.innerHTML += arr[i].substr(val.length);
- /*insert a input field that will hold the current array item's value:*/
- b.innerHTML += "<input type='hidden' value='" + arr[i] + "'>";
- /*execute a function when someone clicks on the item value (DIV element):*/
- b.addEventListener("click", function(e) {
- /*insert the value for the autocomplete text field:*/
- inp.value = this.getElementsByTagName("input")[0].value;
- /*close the list of autocompleted values,
- (or any other open lists of autocompleted values:*/
- closeAllLists();
- });
- a.appendChild(b);
- }
- }
- });
- /*execute a function presses a key on the keyboard:*/
- inp.addEventListener("keydown", function(e) {
- var x = document.getElementById(this.id + "autocomplete-list");
- if (x) x = x.getElementsByTagName("div");
- if (e.keyCode == 40) {
- /*If the arrow DOWN key is pressed,
- increase the currentFocus variable:*/
- currentFocus++;
- /*and and make the current item more visible:*/
- addActive(x);
- } else if (e.keyCode == 38) { //up
- /*If the arrow UP key is pressed,
- decrease the currentFocus variable:*/
- currentFocus--;
- /*and and make the current item more visible:*/
- addActive(x);
- } else if (e.keyCode == 13) {
- /*If the ENTER key is pressed, prevent the form from being submitted,*/
- e.preventDefault();
- if (currentFocus > -1) {
- /*and simulate a click on the "active" item:*/
- if (x) x[currentFocus].click();
- }
- }
- });
- function addActive(x) {
- /*a function to classify an item as "active":*/
- if (!x) return false;
- /*start by removing the "active" class on all items:*/
- removeActive(x);
- if (currentFocus >= x.length) currentFocus = 0;
- if (currentFocus < 0) currentFocus = (x.length - 1);
- /*add class "autocomplete-active":*/
- x[currentFocus].classList.add("autocomplete-active");
- }
- function removeActive(x) {
- /*a function to remove the "active" class from all autocomplete items:*/
- for (var i = 0; i < x.length; i++) {
- x[i].classList.remove("autocomplete-active");
- }
- }
- function closeAllLists(elmnt) {
- /*close all autocomplete lists in the document,
- except the one passed as an argument:*/
- var x = document.getElementsByClassName("autocomplete-items");
- for (var i = 0; i < x.length; i++) {
- if (elmnt != x[i] && elmnt != inp) {
- x[i].parentNode.removeChild(x[i]);
- }
- }
- }
- /*execute a function when someone clicks in the document:*/
- document.addEventListener("click", function (e) {
- closeAllLists(e.target);
- });
- }
- /*An array containing all the country names in the world:*/
- var countries = <%= raw @y %>;
- /*initiate the autocomplete function on the "myInput" element, and pass along the countries array as possible autocomplete values:*/
- autocomplete(document.getElementById("myInput"), countries);
- </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement