ADAPTABLE THEME | Modal's - Need a little help to fix some code

ADAPTABLE THEME | Modal's - Need a little help to fix some code

by Daniell Goodin -
Number of replies: 5

Moodle 3.3.2, Adaptable 1.5

Hi Community,  

Just pushing the boundaries here and as we are coming in to the Xmas time, this is just a bit of play around code. 

Promising.. 

I have got this to work and looks great.. (But the CSS breaks things in other places)

Lightbox (Modal Image Gallery)

Try it yourself

And I have got this to work.. 

Launch demo modal

This one is working fine without adding in any CSS with in my Moodle. 

Daniell's play code

The Problem.. 

when I load in the lightbox custom CSS, it will cancel out the ability to have Moodle Modal's in lessons to show. 

i.e.. when you want delete a lesson it will not show the Modal to allow you to do this. 

this is the code I am using. 

Lightbox (Modal Image Gallery) - Working Moodle 3.3.3 - WIP

I am just wondering if someone with a bit more coding experience then myself can run their eye over it and see what I need to strip out. 

I am loading it without the Javascript and it still happens.. 

Plus you will see I have loaded in a bit more code to the header, this can also be stripped out. 

You will notice in my button example I have borrowed the code from base Moodle to get this looking fine.. 

Would love now to add in this lightbox code.

thanks in advance 

And Merry Xmas to all that celebrate it. smile (We need a Santa smiley...)

(Edited by Mary Evans - ADDED ADAPTABLE THEME | TO SUBJECT LINE - original submission Sunday, 10 December 2017, 12:36 PM)

Average of ratings: -
In reply to Daniell Goodin

Re: ADAPTABLE THEME | Modal's - Need a little help to fix some code

by Mary Evans -
Picture of Core developers Picture of Documentation writers Picture of Peer reviewers Picture of Plugin developers Picture of Testers

I am sure Moodle has LightBox in its library.

Same too for Modal

or am I missing something?

In reply to Daniell Goodin

Re: ADAPTABLE THEME | Modal's - Need a little help to fix some code

by Mary Evans -
Picture of Core developers Picture of Documentation writers Picture of Peer reviewers Picture of Plugin developers Picture of Testers

Hi Daniell,

Furthere to my last comment, Moodle containas all the JavaScript for LightBox so you may well be adding code that is conflicting with Moodle and BootstrapBase CSS & JS.

I'm not in a position to give you advice as it is years since I used LightBox, which was probably when it first came out!!!

I'm going to alter the subject line and add ADAPTABLE THEME so that Fernando who is on of the team working on this theme.

Hopefully he or someone else may help out here.

Cheers

PS:  As an afterthought can you please list the actual CSS you are using?

Thanks

Mary

In reply to Mary Evans

Re: ADAPTABLE THEME | Modal's - Need a little help to fix some code

by Daniell Goodin -

Hi Mary, 

Busy time of year for us all.. Santa coming soon.. smile

I have dropped the working code in to here.. 

https://bootsnipp.com/user/snippets/Q0Do5


understand your first post.. as both 

  •  lightbox (Via plug in and full page activity)
  • Modal's (Via Moodle base code)
CSS and Java code are in place..

in my research I did come across Richard's filter

https://moodle.org/mod/forum/discuss.php?d=362216#p1460807


So for giggles, I am taking this a bit further as when it is working it looks great. I can see a lot of use for Modals in Moodle 

( Just had to do that pun smile.


And as per my button example I have got  working so another nice way to drop some "important\take note" type information into.. 


So going back to the Carousel type "lightbox Modal" code. 

it is just going to be getting the right HTML calls going to the CSS and JavaScript that is already contained. 

This is what I have for CSS at the moment.. 

 /* for Modal setout */
 /* dg added */
.modal {
    position: fixed;
    top: 10%;
    left: 50%;
    z-index: 1050;
    width: 560px;
    margin-left: 0px;
    background-color: #fff;
    border: 1px solid #999;
    border-radius: 6px;
    box-shadow: 0 3px 7px rgba(0,0,0,.3);
    background-clip: padding-box;
    outline: 0;
}

 /* dg added */

body {
  font-family: Verdana, sans-serif;
  margin: 0;
}

* {
  box-sizing: border-box;
}
.row > .column {
  padding: 0 8px;
}

.row:after {
  content: "";
  display: table;
  clear: both;
}

.column {
  float: left;
  width: 25%;
}

/* The Modal (background) */
.modal {
  display: none;
  position: fixed;
  z-index: 9999999999999999999999999999999999999;
  padding-top: 100px;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  overflow: auto;
  background-color: black;
}

/* Modal Content */
.modal-content {
  position: relative;
  background-color: #fefefe;
  margin: auto;
  padding: 0;
  left: 0;
  width: 100%;
  max-width: 1200px;
}

/* The Close Button */
.close {
  color: white;
  position: absolute;
  top: 10px;
  right: 25px;
  font-size: 35px;
  font-weight: bold;
}

.close:hover,
.close:focus {
  color: #999;
  text-decoration: none;
  cursor: pointer;
}

.mySlides {
  display: none;
}

/* Next & previous buttons */
.prev,
.next {
  cursor: pointer;
  position: absolute;
  top: 50%;
  width: auto;
  padding: 16px;
  margin-top: -50px;
  color: white;
  font-weight: bold;
  font-size: 20px;
  transition: 0.6s ease;
  border-radius: 0 3px 3px 0;
  user-select: none;
  -webkit-user-select: none;
}

/* Position the "next button" to the right */
.next {
  right: 0;
  border-radius: 3px 0 0 3px;
}

/* On hover, add a black background color with a little bit see-through */
.prev:hover,
.next:hover {
  background-color: rgba(0, 0, 0, 0.8);
}

/* Number text (1/3 etc) */
.numbertext {
  color: #f2f2f2;
  font-size: 12px;
  padding: 8px 12px;
  position: absolute;
  top: 0;
}

.caption-container {
  text-align: center;
  background-color: black;
  padding: 2px 16px;
  color: white;
}

img.demo {
  opacity: 0.6;
}

.active,
.demo:hover {
  opacity: 1;
}

img.hover-shadow {
  transition: 0.3s
}

.hover-shadow:hover {
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19)
}
/* The Modal -end */

This is the HTML

<div class="editor-indent" style="margin-left: 20px; padding: 0 0 0 40px; margin-right: 50px">
<div class="container-fluid">
<div class="row-fluid">
  <div class="column">
    <img src="https://www.w3schools.com/howto/img_nature_wide.jpg" onclick="openModal();currentSlide(1)" class="hover-shadow">
  </div>
<div class="column">
    <img src="https://www.w3schools.com/howto/img_fjords_wide.jpg" onclick="openModal();currentSlide(2)" class="hover-shadow">
  </div>
<div class="column">
    <img src="https://www.w3schools.com/howto/img_mountains_wide.jpg" onclick="openModal();currentSlide(3)" class="hover-shadow">
  </div>
<div class="column">
    <img src="https://www.w3schools.com/howto/img_lights_wide.jpg" onclick="openModal();currentSlide(4)" class="hover-shadow">
  </div>
</div>

<div id="myModal" class="modal" style="display: none;">
  <span class="close cursor" onclick="closeModal()">×</span>
  <div class="modal-content">

    <div class="mySlides" style="display: none;">
      <div class="numbertext">1 / 4</div>
      <img src="https://www.w3schools.com/howto/img_nature_wide.jpg" style="width:100%">
    </div>

    <div class="mySlides" style="display: none;">
      <div class="numbertext">2 / 4</div>
      <img src="https://www.w3schools.com/howto/img_fjords_wide.jpg" style="width:100%">
    </div>

    <div class="mySlides" style="display: none;">
      <div class="numbertext">3 / 4</div>
      <img src="https://www.w3schools.com/howto/img_mountains_wide.jpg" style="width:100%">
    </div>

    <div class="mySlides" style="display: block;">
      <div class="numbertext">4 / 4</div>
      <img src="https://www.w3schools.com/howto/img_lights_wide.jpg" style="width:100%">
    </div>

    <a class="prev" onclick="plusSlides(-1)">❮</a>
    <a class="next" onclick="plusSlides(1)">❯</a>

    <div class="caption-container">
      <p id="caption"></p>
    </div>

<div class="column">
      <img class="demo" src="https://www.w3schools.com/howto/img_nature_wide.jpg" onclick="currentSlide(1)">
    </div>

<div class="column">
      <img class="demo" src="https://www.w3schools.com/howto/img_fjords_wide.jpg" onclick="currentSlide(2)">
    </div>

<div class="column">
      <img class="demo" src="https://www.w3schools.com/howto/img_mountains_wide.jpg" onclick="currentSlide(3)">
    </div>

<div class="column">
      <img class="demo active" src="https://www.w3schools.com/howto/img_lights_wide.jpg" onclick="currentSlide(4)">
    </div>
  </div>
</div></div></div>
Then looking at the Javascript (which we know we dont really need)
<script>
function openModal() {
  document.getElementById('myModal').style.display = "block";
}

function closeModal() {
  document.getElementById('myModal').style.display = "none";
}

var slideIndex = 1;
showSlides(slideIndex);

function plusSlides(n) {
  showSlides(slideIndex += n);
}

function currentSlide(n) {
  showSlides(slideIndex = n);
}

function showSlides(n) {
  var i;
  var slides = document.getElementsByClassName("mySlides");
  var dots = document.getElementsByClassName("demo");
  var captionText = document.getElementById("caption");
  if (n > slides.length) {slideIndex = 1}
  if (n < 1) {slideIndex = slides.length}
  for (i = 0; i < slides.length; i++) {
    slides[i].style.display = "none";
  }
  for (i = 0; i < dots.length; i++) {
    dots[i].className = dots[i].className.replace(" active", "");
  }
  slides[slideIndex-1].style.display = "block";
  dots[slideIndex-1].className += " active";
  captionText.innerHTML = dots[slideIndex-1].alt;
}
</script>
this is going to take a bit of work to pull apart so going to have to put it on the back burner until early next year once we get this xmas rush. but if someone gets it working let me know what we need to do.. as I am sure a coder looks at this and can see my mistakesbig grin


As noted, when I throw in all the code, it works and looks great.. but.. breaks things across the theme or I say Moodle base. 

In reply to Daniell Goodin

Re: ADAPTABLE THEME | Modal's - Need a little help to fix some code

by Mary Evans -
Picture of Core developers Picture of Documentation writers Picture of Peer reviewers Picture of Plugin developers Picture of Testers

Hi,

All I can think of is that the CSS you have here needs some specific class selectors in order to contain it. You could try adding some new class selectors like class="xmas" class="rudolf" class="elves"

giggles!!!

Mary

In reply to Daniell Goodin

Re: ADAPTABLE THEME | Modal's - Need a little help to fix some code

by Jez H -

Hi Daniell,

Have you seen this plugin which we recently upated to work with the current version of adaptable, this allows you to add toggles / modal / Font Awesome in course pages more easily:

https://moodle.org/plugins/mod_bootstrapelements