<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to UIModalWindow</title><link>https://sourceforge.net/p/xe-core/wiki/UIModalWindow/</link><description>Recent changes to UIModalWindow</description><atom:link href="https://sourceforge.net/p/xe-core/wiki/UIModalWindow/feed" rel="self"/><language>en</language><lastBuildDate>Wed, 25 Mar 2015 11:09:19 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/xe-core/wiki/UIModalWindow/feed" rel="self" type="application/rss+xml"/><item><title>UIModalWindow modified by Anonymous</title><link>https://sourceforge.net/p/xe-core/wiki/UIModalWindow/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="modal-window"&gt;Modal Window&lt;/h1&gt;
&lt;p&gt;특정 콘텐츠에만 집중하고 다른 작업은 진행할 수 없을 때 사용하는 위젯이다. 모달창을 표시하면 다음과 같은 화면을 볼 수 있다. &lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://xe-core.googlecode.com/svn/wiki/img/AdminUIModalExample.png" rel="nofollow" /&gt;&lt;/p&gt;
&lt;h2 id="basics"&gt;Basics&lt;/h2&gt;
&lt;p&gt;모달창을 표시하기 위한 앵커 요소는 클래스 속성에 &lt;code&gt;modalAnchor&lt;/code&gt; 클래스 이름을 &lt;strong&gt;반드시&lt;/strong&gt; 포함해야 한다. 또한 모달창으로 사용할 &lt;code&gt;div&lt;/code&gt; 요소는 클래스 속성에 &lt;code&gt;modal&lt;/code&gt; 클래스를 반드시 포함해야 한다. &lt;/p&gt;
&lt;p&gt;또한 모달 앵커 요소의 &lt;code&gt;href&lt;/code&gt; 속성은 모달 콘텐츠 &lt;code&gt;div&lt;/code&gt; 요소의 아이디를 가리켜야 한다. 예를 들어 콘텐츠 요소의 아이디가 &lt;code&gt;modalWindow&lt;/code&gt;라면 앵커 요소는 다음과 같이 작성할 수 있다. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"#modalWindow"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"modalAnchor"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;모달창 열기&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;모달창은 한 개의 자식 요소를 포함하는데, 자식 요소는 &lt;code&gt;fg&lt;/code&gt; 클래스 이름을 &lt;strong&gt;반드시&lt;/strong&gt; 포함해야 한다. 가장 간단한 형태의 모달창 HTML 마크업은 다음과 같이 작성할 수 있다. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"#modalWindow"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"modalAnchor"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;모달창 열기&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"modalWindow"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"modal"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"fg"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        Hello, world
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;위 코드를 문서에 포함한 후 문서를 다시 읽고 버튼을 클릭하면 다음과 같은 화면을 볼 수 있다. &lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://xe-core.googlecode.com/svn/wiki/img/AdminUIModalExample2.png" rel="nofollow" /&gt;&lt;/p&gt;
&lt;p&gt;뿐만아니라 앵커 요소에는 모달창을 열 때 사용할 옵션을 설정할 수 있다. 각 옵션은 &lt;code&gt;data-*&lt;/code&gt; 와 같은 형태의 속성을 통해 설정한다. 예를 들어, 모달창이 페이드인 또는 페이드아웃되는 속도를 조절하려면 &lt;code&gt;data-duration&lt;/code&gt; 옵션을 다음과 같이 설정한다. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"#modalWindow"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"modalAnchor"&lt;/span&gt; &lt;span class="na"&gt;data-duration=&lt;/span&gt;&lt;span class="s"&gt;"fast"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;모달창 열기&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;현재 사용할 수 있는 옵션은 다음과 같다. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;data-effect&lt;/code&gt;&lt;/strong&gt; : 모달창을 표시할 때 사용할 효과. 선택 가능한 값은 &lt;code&gt;fade&lt;/code&gt;(기본값), &lt;code&gt;rise&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;data-duration&lt;/code&gt;&lt;/strong&gt; : 효과를 실행할 시간. &lt;code&gt;fast&lt;/code&gt;, &lt;code&gt;slow&lt;/code&gt; 또는 밀리초(ms) 단위의 시간 숫자 &lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="events"&gt;Events&lt;/h2&gt;
&lt;p&gt;프로그램에서 사용자 액션을 통하지 않고 모달창을 띄우거나 닫고 싶으면 jQuery 함수를 사용해 앵커 요소를 선택한 후 선택한 jQuery 요소에서 &lt;code&gt;open.mw&lt;/code&gt; 또는 &lt;code&gt;close.mw&lt;/code&gt;를 사용한다. 모달창을 열려면 &lt;code&gt;open.mw&lt;/code&gt;를, 닫으려면 &lt;code&gt;close.mw&lt;/code&gt;를 사용한다. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"#modalWindow"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"modalAnchor"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;모달창 열기&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
jQuery('a.modalAnchor').trigger('open.mw');
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;만약 모달창을 열거나 닫기 전에 실행하고 싶은 코드가 있다면 이벤트 이름 앞에 &lt;code&gt;before-&lt;/code&gt;, &lt;code&gt;after-&lt;/code&gt;를 접두어로 추가하여 이벤트 핸들러를 할당하면 된다. 예를 들어, 모달창을 &lt;strong&gt;열기 전&lt;/strong&gt;에 실행하고 싶은 코드는 다음과 같이 할당할 수 있다. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nx"&gt;jQuery&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'a.modalAnchor'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
   &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'before-open.mw'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
      &lt;span class="c1"&gt;// 실행할 코드&lt;/span&gt;
   &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;마찬가지로 모달창을 닫은 직후에 실행할 코드는 &lt;code&gt;after-close.mw&lt;/code&gt; 이벤트를 사용하면 된다. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nx"&gt;jQuery&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'a.modalAnchor'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
   &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'after-close.mw'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
      &lt;span class="c1"&gt;// 실행할 코드&lt;/span&gt;
   &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;after-&lt;/code&gt;와는 달리 &lt;code&gt;before-&lt;/code&gt; 이벤트에서는 원래의 이벤트를 취소할 수 있다. 예를 들어, &lt;code&gt;before-open.mw&lt;/code&gt; 이벤트에서 창 열기를 취소하고 싶으면 다음과 같이 기본 동작을 취소하면 된다. 이벤트 핸들러 함수의 첫 번째 인수로 이벤트 객체를 전달받고 이벤트 객체의 preventDefault() 메소드를 실행하면 기본 동작이 취소된다. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nx"&gt;jQuery&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'a.modalAnchor'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
   &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'before-open.mw'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt; 
      &lt;span class="c1"&gt;// 이벤트 취소 - 모달창이 열리지 않음&lt;/span&gt;
      &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;preventDefault&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
   &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;간단하게 false를 반환하는 방법도 있다. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nx"&gt;jQuery&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'a.modalAnchor'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
   &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'before-open.mw'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt; 
      &lt;span class="c1"&gt;// 이벤트 취소 - 모달창이 열리지 않음&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
   &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;마찬가지로 &lt;code&gt;before-close.mw&lt;/code&gt; 이벤트에서 기본 동작을 취소하면 모달창이 닫히지 않게 된다. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nx"&gt;jQuery&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'a.modalAnchor'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
   &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'before-close.mw'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt; 
      &lt;span class="c1"&gt;// 이벤트 취소 - 모달창이 닫히지 않음&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
   &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="jquery-plugin"&gt;jQuery Plugin&lt;/h2&gt;
&lt;p&gt;이 패턴은 페이지를 읽어들일 때 자동으로 실행되기 때문에 페이지 요소를 동적으로 생성하는 경우에는 적용되지 않는 문제가 있다. 다음과 같이 &lt;code&gt;modalAnchor&lt;/code&gt; 요소를 선택한 후 &lt;code&gt;xeModalWindow&lt;/code&gt; 메소드를 실행하면 페이지를 읽어들인 뒤에도 스크립트를 적용할 수 있다. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;modalAnchor&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;xeModalWindow&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Wed, 25 Mar 2015 11:09:19 -0000</pubDate><guid>https://sourceforge.nete8159ce0b7da1faa43c8ddbb148941c27c6bc391</guid></item></channel></rss>