Advertisement
Guest User

Untitled

a guest
Apr 25th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.47 KB | None | 0 0
  1. window.onload = function(){
  2. removeReadMore();/*on load removes any unneccessary read mores*/
  3. }
  4.  
  5. function removeReadMore(){/*checks both columns for any articles that don't overflow and removes read more where that's true*/
  6. var x = document.getElementById("column_left").children.length;
  7. for(var i = 0; i<x; i++){
  8. var el = document.getElementById("column_left").children[i];
  9. if(!isOverflown(el)){
  10. el.children[0].style.display = "none";
  11. el.children[1].style.position = "static";
  12. }
  13. }
  14. x = document.getElementById("column_right").children.length;
  15. for(var i = 0; i<x; i++){
  16. var el = document.getElementById("column_right").children[i];
  17. if(!isOverflown(el)){
  18. el.children[0].style.display = "none";
  19. el.children[1].style.position = "static";
  20. }
  21. }
  22. }
  23. function isOverflown(el){/*checks if article div is overflowing*/
  24. return el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth;
  25. }
  26. function readMore(el){/*on a readmore click makes article height automatic so as to show it's entire content. Switches readmore class, text and onclick function so this may be reversed on click*/
  27. var readMoreP = el.childNodes[0];
  28. var article = el.parentNode;
  29. var articleHeading = article.childNodes;
  30.  
  31. el.setAttribute("onclick","collapse(this)");
  32. el.setAttribute("class","collapse");
  33. el.style.height = "61px";
  34.  
  35. readMoreP.innerHTML = "COLLAPSE";
  36.  
  37. article.style.height = "auto";
  38.  
  39. }
  40. function collapse(el){/*sets a readmore to it's original state*/
  41.  
  42. var readMoreP = el.childNodes[0];
  43. var article = el.parentNode;
  44. var articleHeading = article.childNodes;
  45.  
  46. el.setAttribute("onclick","readMore(this)");
  47. el.setAttribute("class","read_more");
  48. el.style.height = "35%";
  49.  
  50. readMoreP.innerHTML = "READ MORE";
  51.  
  52. article.style.height = "11em";
  53. }
  54. function isSubmitOk(){/*Checks if form entries are filled out correctly. Requests correction otherwise. If no errors are found, returns true and passes title and message strings to postMessage(x,y)*/
  55. var name = document.forms["submission"]["name"].value;
  56. var lname = document.forms["submission"]["lastname"].value;
  57. var age = document.forms["submission"]["age"].value;
  58. var title = document.forms["submission"]["title"].value;
  59. var message = document.forms["submission"]["message"].value;
  60.  
  61. var ok = true;/*return boolean set to false if any field doesn't check out*/
  62. var err = "Please correct following input errors:\n";/*if errors are found their respective correction request strings are added to err and displayed in an alert at end of check*/
  63.  
  64. if(!name){
  65. ok = false;
  66. err += "No name given\n";
  67. }
  68.  
  69. else if(/[^a-z]/i.test(name)){/*checks if name field contains exclusively letters*/
  70. ok = false;
  71. err += "Name field contains invalid character(s)\n";
  72. }
  73.  
  74. if(!lname){
  75. ok = false;
  76. err += "No last name given\n";
  77. }
  78.  
  79. else if(/[^a-z]/i.test(lname)){/*checks if last name field contains exclusively letters*/
  80. ok = false;
  81. err += "Last name field contains false character(s)\n";
  82. }
  83.  
  84. if(!age){
  85. ok = false;
  86. err += "No age given\n";
  87. }
  88.  
  89. else if(age<18){
  90. ok = false;
  91. err += "Age has to be 18+\n";
  92. }
  93.  
  94. if(!title){
  95. ok = false;
  96. err += "No title given \n";
  97. }
  98.  
  99. else if(title.length>15){
  100. ok = false;
  101. err += "Title over 15 characters long\n";
  102. }
  103.  
  104. if(!message){
  105. ok = false;
  106. err += "No message given\n";
  107. }
  108. else if(message.length>700){/*restricts message length to 700 characters. returns current character count in error message*/
  109. ok = false;
  110. err += "Message length ("+message.length+") is longer than the max 700 character count";
  111. }
  112.  
  113. if(!ok) alert(err);
  114. else postMessage(title, message);/*if no errors are found, passes title and message strings to postMessage*/
  115. return ok;
  116. }
  117. var columnOrder = 0;/*switches between 0 and 1. used to alternate between the two columns for article posting*/
  118. function postMessage(title, message){/*creates an article div, appends it to either column*/
  119. title = title.toUpperCase();/*titles are always all caps*/
  120. var column;
  121. if(columnOrder == 0){ /*Assigns left or right column to column var depending on column order value. Changes column order value*/
  122. columnOrder++; /**/
  123. column = document.getElementById("column_left"); /**/
  124. } /**/
  125. else{ /**/
  126. columnOrder = 0; /**/
  127. column = document.getElementById("column_right"); /**/
  128. }
  129. var article = document.createElement("div");/*creates article div appends classes*/
  130. article.setAttribute("class","article");
  131.  
  132. column.appendChild(article)
  133.  
  134. var rdMore = document.createElement("div");/*creates read more div, appends classes and onclick function*/
  135. rdMore.setAttribute("class","read_more");
  136. rdMore.setAttribute("onclick","readMore(this)");
  137.  
  138.  
  139. var rdMorePar = document.createElement("p");/*creates readmore paragraph*/
  140. var rdMoreText = document.createTextNode("READ MORE");
  141. rdMorePar.appendChild(rdMoreText);
  142. rdMore.appendChild(rdMorePar);
  143.  
  144. article.appendChild(rdMore);
  145.  
  146. var articleHeading = document.createElement("h2");/*creates title h2 element, appends title string value*/
  147. var headingText = document.createTextNode(title);
  148. articleHeading.appendChild(headingText);
  149.  
  150. article.appendChild(articleHeading);
  151.  
  152. var messagePar = document.createElement("p");/*creates message paragraph, appends message string value*/
  153. var messageText = document.createTextNode(message);
  154. messagePar.appendChild(messageText);
  155.  
  156. article.appendChild(messagePar);
  157.  
  158. column.appendChild(article);/*appends end result to column*/
  159.  
  160. removeReadMore();/*runs read more removal in case new article doesn't overflow*/
  161. }
  162. function generateIpsum(){/*creates dummy lorem ipsum articles by passing lorem ipsum title and message values to postMessage(x,y)*/
  163. var title = "LOREM IPSUM"
  164. var message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dictum aliquet nibh vel blandit. Sed vestibulum sapien at sem blandit tincidunt. Sed malesuada et nibh non interdum. Integer elit sem, pharetra eu justo quis, pharetra pretium metus. In non tincidunt dui. Proin at eros a est suscipit egestas ultrices et magna. Sed in gravida enim, ut lacinia sem. Donec aliquet odio non egestas feugiat. Aliquam leo eros, molestie at metus vehicula, sagittis dictum tellus. Curabitur felis erat, pellentesque nec eleifend non, porta sit amet nisi. Donec posuere volutpat justo, eu pellentesque urna. Phasellus dapibus turpis ac commodo faucibus. Aliquam erat volutpat. Nullam ac porttitor nunc."
  165. postMessage(title,message);
  166. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement