Added: dev/any23/2.1/apache-any23-service-2.1/resources/form.html
==============================================================================
--- dev/any23/2.1/apache-any23-service-2.1/resources/form.html (added)
+++ dev/any23/2.1/apache-any23-service-2.1/resources/form.html Fri Sep 15
07:52:10 2017
@@ -0,0 +1,414 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<html xmlns:lang="en"
+ xmlns:xhtml="http://www.w3.org/1999/xhtml"
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <head>
+ <title>Apache Any23: Anything To Triples - Service 2.1 (2017-09-15
07:11:43+0000)</title>
+ <link rel="stylesheet" type="text/css"
href="resources/css/bootstrap.min.css" />
+ <script type="text/javascript"
src="resources/js/jquery-1.7.2.min.js"></script>
+ <script type="text/javascript"
src="resources/js/bootstrap-modal.js"></script>
+ <script type="application/javascript">
+jQuery( document ).ready( function($)
+{
+ $.each( $( '.app-base-uri' ), function()
+ {
+ $( this ).text( document.location );
+ });
+
+ $( '#app-path' ).text( document.location.pathname );
+ $( '#app-host' ).text( document.location.host );
+} );
+
+function showModal( id )
+{
+ $( id ).modal( 'show' );
+}
+ </script>
+ </head>
+ <body>
+ <div class="container">
+ <a href="http://any23.apache.org/" title="Apache Any23 Dev Site"
target="_blank">
+ <img
+ alt="Apache Any23 Dev Site"
+ src="resources/images/logo-any23-214x97.png"
+ width="90"
+ /></a>
+ <a href="http://www.apache.org/" title="Apache Software Foundation"
target="_blank">
+ <img
+ alt="Apache Software Foundation"
+ src="resources/images/logo-apache-90x30.png"
+ width="90"
+ /></a>
+
+ <h1>Apache Any23 - Anything To Triples - Live Service Demo</h1>
+ <p>Parses Microformats, RDFa, Microdata, RDF/XML, Turtle, N-Triples,
JSON-LD and NQuads.</p>
+ <p>Download and install Any23: visit the <a
href="http://any23.apache.org/" target="_blank">Developers Site</a> and the <a
href="http://any23.apache.org/getting-started.html"
target="_blank">Documentation</a>.
+ <hr />
+ <h2>Convert document at IRI</h2>
+ <form class="well form-horizontal" method="get" action="any23/">
+ <label>Pick an output format and enter the IRI of a web document:</label>
+
+ <div class="control-group">
+ <label class="control-label app-base-uri"
for="format">http://.../</label>
+ <div class="controls">
+ <select id="format" name="format">
+ <option value="best" selected="selected">best</option>
+ <option value="turtle">turtle</option>
+ <option value="ntriples">ntriples</option>
+ <option value="rdfxml">rdfxml</option>
+ <option value="nquads">nquads</option>
+ <option value="trix">trix</option>
+ <option value="json">json</option>
+ </select>/<input type="text" size="50" name="uri"
value="http://twitter.com/cygri" />
+ </div>
+ </div>
+ <div class="control-group">
+ <label class="control-label"
for="url-validation-get">Validation</label>
+ <div class="controls">
+ <select id="url-validation-get" name="validation-mode"
onclick="if(document.getElementById('url-validation-get').value.indexOf('validate')
== 0) { document.getElementById('url-report-get').checked = true; }">
+ <option value="none">none</option>
+ <option value="validate">validate</option>
+ <option value="validate-fix">validate+fix</option>
+ </select>
+ <a href="javascript:showModal( '#sPopup-fix' );">[?]</a>
+ </div>
+ </div>
+ <div class="control-group">
+ <label class="control-label" for="url-report">Report</label>
+ <div class="controls">
+ <label class="checkbox">
+ <input id="url-report-get" type="checkbox" name="report">
+ <a href="javascript:showModal( '#sPopup-report' );">[?]</a>
+ </label>
+ </div>
+ </div>
+ <div class="control-group">
+ <label class="control-label" for="url-annotate-get">Annotate</label>
+ <div class="controls">
+ <label class="checkbox">
+ <input id="url-annotate-get" type="checkbox" type="checkbox"
name="annotate">
+ <a href="javascript:showModal( '#sPopup-annotate' );">[?]</a>
+ </label>
+ </div>
+ </div>
+ <div class="form-actions">
+ <button type="submit" class="btn btn-primary">Convert</button>
+ <button type="reset" class="btn">Cancel</button>
+ </div>
+ </form>
+ <hr />
+
+ <h2>Convert copy&pasted document</h2>
+ <form class="well form-horizontal" method="post" action="any23/">
+ <div class="control-group">
+ <label class="control-label" for="type">Input format</label>
+ <div class="controls">
+ <select id="type" name="type">
+ <option value="">auto-detect</option>
+ <option value="text/html">HTML with Microformats, RDFa
(text/html)</option>
+ <option value="application/xhtml+xml">XHTML with Microformats,
RDFa, Microdata (application/xhtml+xml)</option>
+ <option value="text/turtle">Turtle (text/turtle)</option>
+ <option value="text/nt">N-Triples (text/nt)</option>
+ <option value="text/nq">N-Quads (text/nq)</option>
+ <option value="application/trix">TriX (application/trix)</option>
+ <option value="application/rdf+xml">RDF/XML
(application/rdf+xml)</option>
+ <option value="text/csv">CSV (text/csv)</option>
+ <option value="application/ld+json">JSON-LD
(application/ld+json)</option>
+ </select>
+ </div>
+ </div>
+ <div class="control-group">
+ <label class="control-label" for="out-format">Output format</label>
+ <div class="controls">
+ <select id="out-format" name="format">
+ <option value="best" selected="selected">best
(content-negotiated)</option>
+ <option value="turtle">turtle</option>
+ <option value="ntriples">ntriples</option>
+ <option value="rdfxml">rdfxml</option>
+ <option value="nquads">nquads</option>
+ <option value="trix">trix</option>
+ <option value="json">json</option>
+ </select>
+ </div>
+ </div>
+ <div class="control-group">
+ <label class="control-label"
for="url-validation-post">Validation</label>
+ <div class="controls">
+ <select id="url-validation-post" name="validation-mode"
onclick="if(document.getElementById('url-validation-post').value.indexOf('validate')
== 0) { document.getElementById('url-report-post').checked = true; }">
+ <option value="none">none</option>
+ <option value="validate">validate</option>
+ <option value="validate-fix">validate+fix</option>
+ </select>
+ <a href="javascript:showModal( '#sPopup-fix' );">[?]</a>
+ </div>
+ </div>
+ <div class="control-group">
+ <label class="control-label" for="url-report">Report</label>
+ <div class="controls">
+ <label class="checkbox">
+ <input id="url-report-post" type="checkbox" name="report">
+ <a href="javascript:showModal( '#sPopup-report' );">[?]</a>
+ </label>
+ </div>
+ </div>
+ <div class="control-group">
+ <label class="control-label" for="url-annotate-post">Annotate</label>
+ <div class="controls">
+ <label class="checkbox">
+ <input id="url-annotate-post" type="checkbox" type="checkbox"
name="annotate">
+ <a href="javascript:showModal( '#sPopup-annotate' );">[?]</a>
+ </label>
+ </div>
+ </div>
+
+ <textarea class="span11" name="body" rows="12">@prefix foaf:
<http://xmlns.com/foaf/0.1/> .
+
+[] a foaf:Person;
+ foaf:name "John X. Foobar";
+ foaf:mbox_sha1sum "cef817456278b70cee8e5a1611539ef9d928810e";
+ .</textarea>
+
+ <div class="form-actions">
+ <button type="submit" class="btn btn-primary">Convert</button>
+ <button type="reset" class="btn">Cancel</button>
+ </div>
+
+ </form>
+ <hr />
+
+ <h2>API quick reference</h2>
+ <h3>Examples</h3>
+ <ul>
+ <li><code><a href="best/twitter.com/cygri"><span
class="app-base-uri">http://.../</span>best/twitter.com/cygri</a></code></li>
+ <li><code><a href="rdfxml/http://data.gov"><span
class="app-base-uri">http://.../</span>rdfxml/http://data.gov</a></code></li>
+ <li><code><a href="ttl/http://www.w3.org/People/Berners-Lee/card"><span
class="app-base-uri">http://.../</span>ttl/http://www.w3.org/People/Berners-Lee/card</a></code></li>
+ <li><code><a href="?uri=http://dbpedia.org/resource/Berlin"><span
class="app-base-uri">http://.../</span>?uri=http://dbpedia.org/resource/Berlin</a></code></li>
+ <li><code><a
href="?format=nt&uri=http://dbpedia.org/resource/Berlin"><span
class="app-base-uri">http://.../</span>?format=nt&uri=http://dbpedia.org/resource/Berlin</a></code></li>
+ </ul>
+ <h3>Compact API</h3>
+ <p>HTTP GET requests can be made
+ to IRIs of the shape</p>
+ <pre><span
class="app-base-uri">http://.../</span><em>format</em>/<em>input-uri</em></pre>
+ <p>The response is the input document converted to the desired output
format.</p>
+
+ <h3>Form-style GET API</h3>
+ <p>HTTP GET requests can be made to
+ the IRI
+ <code class="app-base-uri">http://.../</code> with the following
+ query parameters:
+ </p>
+ <table class="table">
+ <tr><th>uri</th><td>IRI of an input document.</td></tr>
+ <tr><th>format</th><td>Desired output format, defaults to
<code>best</code>.</td></tr>
+ <tr><th>validation-mode</th><td>The validation level to be applied on
the input. Possible values:<br/>
+ <code>none</code> (no validation applied);<br/>
+ <code>validate</code>(apply validation and produce validation report
if <code>annotate</code> flag is enabled);<br/>
+ <code>validate+fix</code>(apply validation, try to fix detection
issues and produce validation report if <code>annotate</code> flag is
enabled).</td>
+ </tr>
+ <tr><th>annotate</th><td>If specified the output RDF will contain
extractor specific scope comments.<br/>Possible values:
<code>on</code>/<code>off</code></td></tr>
+ <tr><th>report</th><td>If specified will produce a full XML report
containing extraction and validation issues other than produced
metadata.<br/>Possible values: <code>on</code>/<code>off</code></td></tr>
+ </table>
+ Such URL will return an HTTP <i>302</i> redirect to <code><span
class="app-base-uri">http://...</span>any23/<em>format</em></code>.<br/>
+ <p>The response is the input document converted to the desired output
format.</p>
+
+ <h3>Direct POST API</h3>
+ <p>HTTP POSTing a document body to
+ <code><span
class="app-base-uri">http://.../</span><em>format</em></code> will convert
+ the document to the specified output format. <br/>
+ The media type of the input
+ has to be specified in the <code>Content-Type</code> HTTP header.
+ Depending on the servlet container, a <code>Content-Length</code> header
specifying
+ the length of the input document in bytes might also be required.<br/>
+ Typical media types for supported input formats are:
+ </p>
+ <table class="table">
+ <tr><th>Input format</th><th>Media type</th></tr>
+ <tr><th>HTML</th><td><code>text/html</code></td></tr>
+ <tr><th>RDF/XML</th><td><code>application/rdf+xml</code></td></tr>
+ <tr><th>Turtle</th><td><code>text/turtle</code></td></tr>
+ <tr><th>N-Triples</th><td><code>text/nt</code></td></tr>
+ <tr><th>N-Quads</th><td><code>text/nq</code></td></tr>
+ <tr><th>TriX</th><td><code>application/trix</code></td></tr>
+ </table>
+ <p>Example POST request:</p>
+ <pre>POST <span id="app-path">/</span>rdfxml HTTP/1.0
+Host: <span id="app-host">example.com</span>
+Content-Type: text/turtle
+Content-Length: 174
+
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+
+[] a foaf:Person;
+ foaf:name "John X. Foobar";
+ foaf:mbox_sha1sum "cef817456278b70cee8e5a1611539ef9d928810e";
+ .</pre>
+
+ <h3>Form-style POST API</h3>
+ <p>A document body can also be converted by HTTP POSTing form data to
+ <code><span class="app-base-uri">http://.../</span></code>. <br/>
+ The <code>Content-Type</code> HTTP header must be set to
+ <code>application/x-www-form-urlencoded</code>. The following
+ parameters are supported:
+ </p>
+ <table class="table">
+ <tr><th>type</th><td>Media type of the input, see the table above. If
not present, auto-detection will be attempted.</td></tr>
+ <tr><th>body</th><td>Document body to be converted.</td></tr>
+ <tr><th>format</th><td>Desired output format; defaults to
<code>best</code>.</td></tr>
+ <tr><th>validation-mode</th><td>The validation level to be applied on
the input. Possible values:<br/>
+ <code>none</code> (no validation applied);<br/>
+ <code>validate</code>(apply validation and produce validation report
if <code>annotate</code> flag is enabled);<br/>
+ <code>validate+fix</code>(apply validation, try to fix detection
issues and produce validation report if <code>annotate</code> flag is
enabled).</td>
+ </tr>
+ <tr><th>annotate</th><td>If specified the output RDF will contain
extractor specific scope comments.<br/>Possible values:
<code>on</code>/<code>off</code></td></tr>
+ <tr><th>report</th><td>If specified will produce a full XML report
containing extraction and validation issues other than produced
metadata.<br/>Possible values: <code>on</code>/<code>off</code></td></tr>
+ </table>
+
+ <h3>Output formats</h3>
+ <p>Supported output format identifiers are:</p>
+ <ul>
+ <li><code>best</code> for content negotiation according to the client's
<code>Accept</code> HTTP header</li>
+ <li><code>turtle</code>, <code>ttl</code>, <code>n3</code> for
+ <a href="http://www.w3.org/TeamSubmission/turtle/"
target="_blank">Turtle</a>/<a href="http://www.w3.org/DesignIssues/Notation3"
target="_blank">N3</a></li>
+ <li><code>ntriples</code>, <code>nt</code> for
+ <a href="http://www.w3.org/TR/rdf-testcases/#ntriples"
target="_blank">N-Triples</a></li>
+ <li><code>nquads</code>, <code>nq</code> for
+ <a href="http://sw.deri.org/2008/07/n-quads/"
target="_blank">N-Quads</a></li>
+ <li><code>trix</code> for
+ <a href="http://www.w3.org/2004/03/trix/" target="_blank">TriX</a></li>
+ <li><code>rdfxml</code>, <code>rdf</code>, <code>xml</code> for
+ <a href="http://www.w3.org/TR/rdf-syntax-grammar/"
target="_blank">RDF/XML</a></li>
+ <li><code>json</code> for <a href="http://json.org/"
target="_blank">JSON</a></li>
+ </ul>
+
+ <h3>Error reporting</h3>
+ <p>Processing errors are indicated via
+ HTTP status codes and brief <code>text/plain</code> error messages.
+ The following status codes can be returned:</p>
+ <table class="table">
+ <thead>
+ <tr><th>Code</th><th>Reason</th></tr>
+ </thead>
+ <tbody>
+ <tr><th>200 OK</th><td>Success</td></tr>
+ <tr><th>400 Bad Request</th><td>Missing or malformed input
parameter</td></tr>
+ <tr><th>404 Not Found</th><td>Malformed request IRI</td></tr>
+ <tr><th>406 Not Acceptable</th><td>None of the media types specified
in the <code>Accept</code> header are supported</td></tr>
+ <tr><th>415 Unsupported Media Type</th><td>Document body with
unsupported media type was POSTed</td></tr>
+ <tr><th>501 Not Implemented</th><td>Extraction from input was
successful, but yielded zero triples</td></tr>
+ <tr><th>502 Bad Gateway</th><td>Input document from a remote server
could not be fetched or parsed</td></tr>
+ </tbody>
+ </table>
+ <h3>Report Format</h3>
+ <p>The XML report format is subjected to changes. The current content is
described in section
+ <a href="http://any23.apache.org/service.html" target="_blank">Any23
Service</a>.
+ </p>
+ <hr />
+ <p><b>Apache Any23 v.2.1 (2017-09-15 07:11:43+0000)</b></p>
+ <p><a href="http://any23.apache.org/" target="_blank">Any23 project
homepage</a> | Hosted at <a href="http://apache.org/" target="_blank">Apache
Software Foundation</a></p>
+
+ <div id="sPopup-fix" class="modal hide fade">
+ <div class="modal-header">
+ <button type="button" class="close" >Ã</button>
+ <h3>Validation</h3>
+ </div>
+ <div class="modal-body">
+ <p>
+ The <b>Any23</b> service tries to fix some <a
href="http://www.deri.ie/fileadmin/documents/DERI-TR-2009-07-28.pdf"
target="_blank">common issues</a>
+ before performing a metadata extraction. The fixing is performed
according a set of fully customizable rules.
+ </p>
+ <p>
+ The following <i>Validation</i> options are available.
+ </p>
+ <ul>
+ <li><b>none</b>: no validation will be performed;</li>
+ <li><b>validate</b>: common errors within the document will be
detected and reported. When selected this option the
+ <b>Report</b> flag will be activated to visualize the validation
outcome;</li>
+ <li><b>validate+fix</b>: the common issues will be detected and a
fix will be applied when available.</li>
+ </ul>
+ <p>
+ Please refer to the <a
href="http://any23.apache.org/dev-validation-fix.html"
target="_blank">Developer Guide</a>
+ for any further detail.
+ </p>
+ </div>
+ <div class="modal-footer">
+ <a href="#" class="btn" >Close</a>
+ </div>
+ </div>
+
+ <div id="sPopup-report" class="modal hide fade">
+ <div class="modal-header">
+ <button type="button" class="close">Ã</button>
+ <h3>Report</h3>
+ </div>
+ <div class="modal-body">
+ <p>
+ If the <i>Report</i> checkbox is selected, the <b>Any23</b> service
returns an <b>XML</b> output containing,
+ other then the <b>extracted RDF statements</b>, other information as
the list of the <b>activated extractors</b>
+ and the <b>detected errors</b>.
+ </p>
+ <p>
+ If the <b>validation</b> or <b>validation and fix</b> has been
activated then the report contains also a list
+ of the applied fixes.
+ </p>
+ </div>
+ <div class="modal-footer">
+ <a href="#" class="btn">Close</a>
+ </div>
+ </div>
+
+ <div id="sPopup-annotate" class="modal hide fade">
+ <div class="modal-header">
+ <button type="button" class="close">Ã</button>
+ <h3>Annotate</h3>
+ </div>
+ <div class="modal-body">
+ <p>
+ If the <i>Annotate</i> checkbox is selected, the <b>Any23</b> service
returns an output expressed in the
+ selected <b>RDF</b> format containing also specific format
<b>comments</b> describing the activated extractor
+ scopes for every produced statement.
+ </p>
+ </div>
+ <div class="modal-footer">
+ <a href="#" class="btn">Close</a>
+ </div>
+ </div>
+
+ </div>
+
+ <footer class="footer">
+ <div class="container-fluid">
+ Copyright © 2010-2014 The <a href="http://www.apache.org/">Apache
Software Foundation</a>. All Rights Reserved.<br/> Apache Any23, Apache, the
Apache feather logo, and the Apache Any23 project logos are trademarks of The
Apache Software Foundation. All other marks mentioned may be trademarks or
registered trademarks of their respective owners.
+ </div>
+ </footer>
+
+ <!-- Google Analytics Tracker code. By default configured to report to the
Any23 community group.
+ To change this default behavior please specify your custom ID in parent POM
(form.tracker.id property)
+ or delete this script block to disable. -->
+ <script>
+
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new
Date();a=s.createElement(o),
+
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ ga('create', 'UA-59636188-1', 'auto');
+ ga('send', 'pageview');
+ </script>
+
+ </body>
+</html>
Added:
dev/any23/2.1/apache-any23-service-2.1/resources/images/logo-any23-214x97.png
==============================================================================
Binary file - no diff available.
Propchange:
dev/any23/2.1/apache-any23-service-2.1/resources/images/logo-any23-214x97.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added:
dev/any23/2.1/apache-any23-service-2.1/resources/images/logo-apache-90x30.png
==============================================================================
Binary file - no diff available.
Propchange:
dev/any23/2.1/apache-any23-service-2.1/resources/images/logo-apache-90x30.png
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: dev/any23/2.1/apache-any23-service-2.1/resources/js/bootstrap-modal.js
==============================================================================
--- dev/any23/2.1/apache-any23-service-2.1/resources/js/bootstrap-modal.js
(added)
+++ dev/any23/2.1/apache-any23-service-2.1/resources/js/bootstrap-modal.js Fri
Sep 15 07:52:10 2017
@@ -0,0 +1,218 @@
+/* =========================================================
+ * bootstrap-modal.js v2.0.4
+ * http://twitter.github.com/bootstrap/javascript.html#modals
+ * =========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================= */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* MODAL CLASS DEFINITION
+ * ====================== */
+
+ var Modal = function (content, options) {
+ this.options = options
+ this.$element = $(content)
+ .delegate('[data-dismiss="modal"]', 'click.dismiss.modal',
$.proxy(this.hide, this))
+ }
+
+ Modal.prototype = {
+
+ constructor: Modal
+
+ , toggle: function () {
+ return this[!this.isShown ? 'show' : 'hide']()
+ }
+
+ , show: function () {
+ var that = this
+ , e = $.Event('show')
+
+ this.$element.trigger(e)
+
+ if (this.isShown || e.isDefaultPrevented()) return
+
+ $('body').addClass('modal-open')
+
+ this.isShown = true
+
+ escape.call(this)
+ backdrop.call(this, function () {
+ var transition = $.support.transition &&
that.$element.hasClass('fade')
+
+ if (!that.$element.parent().length) {
+ that.$element.appendTo(document.body) //don't move modals dom
position
+ }
+
+ that.$element
+ .show()
+
+ if (transition) {
+ that.$element[0].offsetWidth // force reflow
+ }
+
+ that.$element.addClass('in')
+
+ transition ?
+ that.$element.one($.support.transition.end, function () {
that.$element.trigger('shown') }) :
+ that.$element.trigger('shown')
+
+ })
+ }
+
+ , hide: function (e) {
+ e && e.preventDefault()
+
+ var that = this
+
+ e = $.Event('hide')
+
+ this.$element.trigger(e)
+
+ if (!this.isShown || e.isDefaultPrevented()) return
+
+ this.isShown = false
+
+ $('body').removeClass('modal-open')
+
+ escape.call(this)
+
+ this.$element.removeClass('in')
+
+ $.support.transition && this.$element.hasClass('fade') ?
+ hideWithTransition.call(this) :
+ hideModal.call(this)
+ }
+
+ }
+
+
+ /* MODAL PRIVATE METHODS
+ * ===================== */
+
+ function hideWithTransition() {
+ var that = this
+ , timeout = setTimeout(function () {
+ that.$element.off($.support.transition.end)
+ hideModal.call(that)
+ }, 500)
+
+ this.$element.one($.support.transition.end, function () {
+ clearTimeout(timeout)
+ hideModal.call(that)
+ })
+ }
+
+ function hideModal(that) {
+ this.$element
+ .hide()
+ .trigger('hidden')
+
+ backdrop.call(this)
+ }
+
+ function backdrop(callback) {
+ var that = this
+ , animate = this.$element.hasClass('fade') ? 'fade' : ''
+
+ if (this.isShown && this.options.backdrop) {
+ var doAnimate = $.support.transition && animate
+
+ this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
+ .appendTo(document.body)
+
+ if (this.options.backdrop != 'static') {
+ this.$backdrop.click($.proxy(this.hide, this))
+ }
+
+ if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
+
+ this.$backdrop.addClass('in')
+
+ doAnimate ?
+ this.$backdrop.one($.support.transition.end, callback) :
+ callback()
+
+ } else if (!this.isShown && this.$backdrop) {
+ this.$backdrop.removeClass('in')
+
+ $.support.transition && this.$element.hasClass('fade')?
+ this.$backdrop.one($.support.transition.end, $.proxy(removeBackdrop,
this)) :
+ removeBackdrop.call(this)
+
+ } else if (callback) {
+ callback()
+ }
+ }
+
+ function removeBackdrop() {
+ this.$backdrop.remove()
+ this.$backdrop = null
+ }
+
+ function escape() {
+ var that = this
+ if (this.isShown && this.options.keyboard) {
+ $(document).on('keyup.dismiss.modal', function ( e ) {
+ e.which == 27 && that.hide()
+ })
+ } else if (!this.isShown) {
+ $(document).off('keyup.dismiss.modal')
+ }
+ }
+
+
+ /* MODAL PLUGIN DEFINITION
+ * ======================= */
+
+ $.fn.modal = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('modal')
+ , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof
option == 'object' && option)
+ if (!data) $this.data('modal', (data = new Modal(this, options)))
+ if (typeof option == 'string') data[option]()
+ else if (options.show) data.show()
+ })
+ }
+
+ $.fn.modal.defaults = {
+ backdrop: true
+ , keyboard: true
+ , show: true
+ }
+
+ $.fn.modal.Constructor = Modal
+
+
+ /* MODAL DATA-API
+ * ============== */
+
+ $(function () {
+ $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e
) {
+ var $this = $(this), href
+ , $target = $($this.attr('data-target') || (href = $this.attr('href'))
&& href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+ , option = $target.data('modal') ? 'toggle' : $.extend({},
$target.data(), $this.data())
+
+ e.preventDefault()
+ $target.modal(option)
+ })
+ })
+
+}(window.jQuery);
\ No newline at end of file