From 9391cb9ccb3dd2884e7be2f15aa729733288f1e5 Mon Sep 17 00:00:00 2001 From: dj3c1t Date: Sun, 23 Jun 2013 22:02:45 +0200 Subject: [PATCH] sourceml devient un plugin mtweb --- app/config.xml | 16 + app/controllers/admin/cache.php | 37 + app/controllers/admin/licences.php | 86 +++ app/controllers/admin/maintenance.php | 34 + app/controllers/admin/sourceml.php | 97 +++ app/controllers/content/sources.php | 277 +++++++ app/controllers/forms/sourceml.php | 97 +++ app/controllers/sources/album.php | 79 ++ app/controllers/sources/groupe.php | 55 ++ app/controllers/sources/morceau.php | 109 +++ app/controllers/sources/piste.php | 114 +++ app/controllers/users/albums.php | 260 +++++++ app/controllers/users/groupes.php | 183 +++++ app/controllers/users/morceaux.php | 435 +++++++++++ app/controllers/users/pistes.php | 478 ++++++++++++ app/controllers/users/sources.php | 58 ++ app/data/modules/share/sml_data_sources_cache.php | 238 ++++++ app/data/modules/share/sml_data_sources_xml.php | 207 ++++++ .../modules/share/sml_data_sources_xml_format.php | 178 +++++ .../modules/share/sml_data_sources_xml_pathes.php | 66 ++ app/data/modules/sql/sml_data_authors.php | 147 ++++ app/data/modules/sql/sml_data_licences.php | 95 +++ app/data/modules/sql/sml_data_source_groupes.php | 131 ++++ app/data/modules/sql/sml_data_sources.php | 817 +++++++++++++++++++++ app/data/modules/sql/sml_data_sources_cache_db.php | 59 ++ app/helpers/mw_helper_sourceml_out.php | 33 + app/observers/mw_observer_sourceml.php | 48 ++ app/out/default/config.xml | 9 + app/out/default/css/actions/forms_sourceml.css | 1 + app/out/default/css/actions/sources.css | 463 ++++++++++++ app/out/default/css/actions/users_albums.css | 1 + app/out/default/css/actions/users_groupes.css | 1 + app/out/default/css/actions/users_morceaux.css | 1 + app/out/default/css/actions/users_pistes.css | 1 + app/out/default/css/colorbox.css | 67 ++ app/out/default/css/colors.css | 324 ++++++++ app/out/default/css/sourceml_accounts.css | 65 ++ .../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 0 -> 384 bytes .../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 0 -> 251 bytes .../images/ui-bg_flat_10_000000_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_100_f6f6f6_1x400.png | Bin 0 -> 104 bytes .../images/ui-bg_glass_100_fdf5ce_1x400.png | Bin 0 -> 125 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../images/ui-bg_gloss-wave_35_f6a828_500x100.png | Bin 0 -> 3762 bytes .../ui-bg_highlight-soft_100_eeeeee_1x100.png | Bin 0 -> 90 bytes .../ui-bg_highlight-soft_75_ffe45c_1x100.png | Bin 0 -> 129 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_228ef1_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_ef8c08_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_ffd27a_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes .../css/ui-lightness/jquery-ui-1.8.12.custom.css | 578 +++++++++++++++ app/out/default/icons/ajax-loader.gif | Bin 0 -> 723 bytes app/out/default/icons/ecouter.png | Bin 0 -> 675 bytes app/out/default/icons/pause.png | Bin 0 -> 228 bytes app/out/default/icons/play.png | Bin 0 -> 270 bytes app/out/default/icons/player_loading.gif | Bin 0 -> 847 bytes app/out/default/icons/stop.png | Bin 0 -> 202 bytes app/out/default/images/colorbox/border.png | Bin 0 -> 112 bytes app/out/default/images/colorbox/controls.png | Bin 0 -> 284 bytes .../images/colorbox/ie6/borderBottomCenter.png | Bin 0 -> 111 bytes .../images/colorbox/ie6/borderBottomLeft.png | Bin 0 -> 215 bytes .../images/colorbox/ie6/borderBottomRight.png | Bin 0 -> 217 bytes .../images/colorbox/ie6/borderMiddleLeft.png | Bin 0 -> 108 bytes .../images/colorbox/ie6/borderMiddleRight.png | Bin 0 -> 108 bytes .../images/colorbox/ie6/borderTopCenter.png | Bin 0 -> 111 bytes .../default/images/colorbox/ie6/borderTopLeft.png | Bin 0 -> 216 bytes .../default/images/colorbox/ie6/borderTopRight.png | Bin 0 -> 214 bytes app/out/default/images/colorbox/loading.gif | Bin 0 -> 723 bytes .../default/images/colorbox/loading_background.png | Bin 0 -> 157 bytes app/out/default/images/colorbox/overlay.png | Bin 0 -> 169 bytes app/out/default/js/actions/admin_cache.js | 30 + app/out/default/js/actions/admin_sourceml.js | 17 + app/out/default/js/actions/sources.js | 380 ++++++++++ app/out/default/js/actions/users.js | 158 ++++ app/out/default/js/actions/users_groupes.js | 28 + app/out/default/js/jquery-ui-1.8.12.custom.min.js | 783 ++++++++++++++++++++ app/out/default/js/jquery.colorbox-min.js | 4 + app/out/default/layouts/admin.xml | 15 + app/out/default/layouts/content.xml | 12 + app/out/default/layouts/forms.xml | 10 + app/out/default/layouts/sources.xml | 19 + app/out/default/layouts/users.xml | 24 + app/out/default/sources.php | 38 + app/out/default/views/admin/cache.php | 37 + app/out/default/views/admin/licences/add.php | 29 + app/out/default/views/admin/licences/edit.php | 29 + app/out/default/views/admin/licences/list.php | 32 + app/out/default/views/admin/maintenance.php | 22 + app/out/default/views/admin/sourceml.php | 45 ++ app/out/default/views/content/sources/sources.php | 23 + app/out/default/views/content/sources/xml_form.php | 77 ++ .../views/forms/sourceml/contact_author.php | 39 + app/out/default/views/sources/album/ariane.php | 13 + app/out/default/views/sources/album/list.php | 52 ++ app/out/default/views/sources/album/view.php | 96 +++ app/out/default/views/sources/ariane.php | 21 + app/out/default/views/sources/colonne.php | 8 + app/out/default/views/sources/current_album.php | 31 + .../default/views/sources/current_album_box.php | 11 + app/out/default/views/sources/entete_groupe.php | 27 + app/out/default/views/sources/groupe/ariane.php | 11 + app/out/default/views/sources/groupe/list.php | 38 + app/out/default/views/sources/groupe/view.php | 42 ++ app/out/default/views/sources/groupe_box.php | 9 + app/out/default/views/sources/lien_contact.php | 8 + app/out/default/views/sources/logo_groupe.php | 22 + app/out/default/views/sources/menu_albums.php | 37 + app/out/default/views/sources/morceau/ariane.php | 18 + app/out/default/views/sources/morceau/list.php | 84 +++ app/out/default/views/sources/morceau/view.php | 56 ++ app/out/default/views/sources/navig_menu.php | 20 + app/out/default/views/sources/nom_groupe.php | 7 + app/out/default/views/sources/piste/ariane.php | 22 + app/out/default/views/sources/piste/list.php | 83 +++ app/out/default/views/sources/piste/view.php | 64 ++ app/out/default/views/sources/source.php | 22 + app/out/default/views/sources/source/arbo.php | 21 + app/out/default/views/sources/source/documents.php | 47 ++ app/out/default/views/sources/source/header.php | 44 ++ .../default/views/sources/source/menu_source.php | 58 ++ app/out/default/views/sources/source/metas.php | 41 ++ app/out/default/views/users/albums/add.php | 126 ++++ app/out/default/views/users/albums/edit.php | 128 ++++ app/out/default/views/users/albums/list.php | 86 +++ app/out/default/views/users/groupes/add.php | 50 ++ app/out/default/views/users/groupes/edit.php | 54 ++ app/out/default/views/users/groupes/list.php | 38 + app/out/default/views/users/morceaux/add.php | 259 +++++++ app/out/default/views/users/morceaux/edit.php | 266 +++++++ app/out/default/views/users/morceaux/list.php | 142 ++++ app/out/default/views/users/pistes/add.php | 264 +++++++ app/out/default/views/users/pistes/edit.php | 272 +++++++ app/out/default/views/users/pistes/list.php | 174 +++++ mw_sourceml.php | 331 +++++++++ 135 files changed, 10999 insertions(+) create mode 100644 app/config.xml create mode 100644 app/controllers/admin/cache.php create mode 100644 app/controllers/admin/licences.php create mode 100644 app/controllers/admin/maintenance.php create mode 100644 app/controllers/admin/sourceml.php create mode 100644 app/controllers/content/sources.php create mode 100644 app/controllers/forms/sourceml.php create mode 100644 app/controllers/sources/album.php create mode 100644 app/controllers/sources/groupe.php create mode 100644 app/controllers/sources/morceau.php create mode 100644 app/controllers/sources/piste.php create mode 100644 app/controllers/users/albums.php create mode 100644 app/controllers/users/groupes.php create mode 100644 app/controllers/users/morceaux.php create mode 100644 app/controllers/users/pistes.php create mode 100644 app/controllers/users/sources.php create mode 100644 app/data/modules/share/sml_data_sources_cache.php create mode 100644 app/data/modules/share/sml_data_sources_xml.php create mode 100644 app/data/modules/share/sml_data_sources_xml_format.php create mode 100644 app/data/modules/share/sml_data_sources_xml_pathes.php create mode 100644 app/data/modules/sql/sml_data_authors.php create mode 100644 app/data/modules/sql/sml_data_licences.php create mode 100644 app/data/modules/sql/sml_data_source_groupes.php create mode 100644 app/data/modules/sql/sml_data_sources.php create mode 100644 app/data/modules/sql/sml_data_sources_cache_db.php create mode 100644 app/helpers/mw_helper_sourceml_out.php create mode 100644 app/observers/mw_observer_sourceml.php create mode 100644 app/out/default/config.xml create mode 100644 app/out/default/css/actions/forms_sourceml.css create mode 100644 app/out/default/css/actions/sources.css create mode 100644 app/out/default/css/actions/users_albums.css create mode 100644 app/out/default/css/actions/users_groupes.css create mode 100644 app/out/default/css/actions/users_morceaux.css create mode 100644 app/out/default/css/actions/users_pistes.css create mode 100644 app/out/default/css/colorbox.css create mode 100644 app/out/default/css/colors.css create mode 100644 app/out/default/css/sourceml_accounts.css create mode 100644 app/out/default/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png create mode 100644 app/out/default/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png create mode 100644 app/out/default/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png create mode 100644 app/out/default/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png create mode 100644 app/out/default/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png create mode 100644 app/out/default/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 app/out/default/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png create mode 100644 app/out/default/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png create mode 100644 app/out/default/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png create mode 100644 app/out/default/css/ui-lightness/images/ui-icons_222222_256x240.png create mode 100644 app/out/default/css/ui-lightness/images/ui-icons_228ef1_256x240.png create mode 100644 app/out/default/css/ui-lightness/images/ui-icons_ef8c08_256x240.png create mode 100644 app/out/default/css/ui-lightness/images/ui-icons_ffd27a_256x240.png create mode 100644 app/out/default/css/ui-lightness/images/ui-icons_ffffff_256x240.png create mode 100644 app/out/default/css/ui-lightness/jquery-ui-1.8.12.custom.css create mode 100644 app/out/default/icons/ajax-loader.gif create mode 100644 app/out/default/icons/ecouter.png create mode 100644 app/out/default/icons/pause.png create mode 100644 app/out/default/icons/play.png create mode 100644 app/out/default/icons/player_loading.gif create mode 100644 app/out/default/icons/stop.png create mode 100644 app/out/default/images/colorbox/border.png create mode 100644 app/out/default/images/colorbox/controls.png create mode 100644 app/out/default/images/colorbox/ie6/borderBottomCenter.png create mode 100644 app/out/default/images/colorbox/ie6/borderBottomLeft.png create mode 100644 app/out/default/images/colorbox/ie6/borderBottomRight.png create mode 100644 app/out/default/images/colorbox/ie6/borderMiddleLeft.png create mode 100644 app/out/default/images/colorbox/ie6/borderMiddleRight.png create mode 100644 app/out/default/images/colorbox/ie6/borderTopCenter.png create mode 100644 app/out/default/images/colorbox/ie6/borderTopLeft.png create mode 100644 app/out/default/images/colorbox/ie6/borderTopRight.png create mode 100644 app/out/default/images/colorbox/loading.gif create mode 100644 app/out/default/images/colorbox/loading_background.png create mode 100644 app/out/default/images/colorbox/overlay.png create mode 100644 app/out/default/js/actions/admin_cache.js create mode 100644 app/out/default/js/actions/admin_sourceml.js create mode 100644 app/out/default/js/actions/sources.js create mode 100644 app/out/default/js/actions/users.js create mode 100644 app/out/default/js/actions/users_groupes.js create mode 100644 app/out/default/js/jquery-ui-1.8.12.custom.min.js create mode 100644 app/out/default/js/jquery.colorbox-min.js create mode 100644 app/out/default/layouts/admin.xml create mode 100644 app/out/default/layouts/content.xml create mode 100644 app/out/default/layouts/forms.xml create mode 100644 app/out/default/layouts/sources.xml create mode 100644 app/out/default/layouts/users.xml create mode 100644 app/out/default/sources.php create mode 100644 app/out/default/views/admin/cache.php create mode 100644 app/out/default/views/admin/licences/add.php create mode 100644 app/out/default/views/admin/licences/edit.php create mode 100644 app/out/default/views/admin/licences/list.php create mode 100644 app/out/default/views/admin/maintenance.php create mode 100644 app/out/default/views/admin/sourceml.php create mode 100644 app/out/default/views/content/sources/sources.php create mode 100644 app/out/default/views/content/sources/xml_form.php create mode 100644 app/out/default/views/forms/sourceml/contact_author.php create mode 100644 app/out/default/views/sources/album/ariane.php create mode 100644 app/out/default/views/sources/album/list.php create mode 100644 app/out/default/views/sources/album/view.php create mode 100644 app/out/default/views/sources/ariane.php create mode 100644 app/out/default/views/sources/colonne.php create mode 100644 app/out/default/views/sources/current_album.php create mode 100644 app/out/default/views/sources/current_album_box.php create mode 100644 app/out/default/views/sources/entete_groupe.php create mode 100644 app/out/default/views/sources/groupe/ariane.php create mode 100644 app/out/default/views/sources/groupe/list.php create mode 100644 app/out/default/views/sources/groupe/view.php create mode 100644 app/out/default/views/sources/groupe_box.php create mode 100644 app/out/default/views/sources/lien_contact.php create mode 100644 app/out/default/views/sources/logo_groupe.php create mode 100644 app/out/default/views/sources/menu_albums.php create mode 100644 app/out/default/views/sources/morceau/ariane.php create mode 100644 app/out/default/views/sources/morceau/list.php create mode 100644 app/out/default/views/sources/morceau/view.php create mode 100644 app/out/default/views/sources/navig_menu.php create mode 100644 app/out/default/views/sources/nom_groupe.php create mode 100644 app/out/default/views/sources/piste/ariane.php create mode 100644 app/out/default/views/sources/piste/list.php create mode 100644 app/out/default/views/sources/piste/view.php create mode 100644 app/out/default/views/sources/source.php create mode 100644 app/out/default/views/sources/source/arbo.php create mode 100644 app/out/default/views/sources/source/documents.php create mode 100644 app/out/default/views/sources/source/header.php create mode 100644 app/out/default/views/sources/source/menu_source.php create mode 100644 app/out/default/views/sources/source/metas.php create mode 100644 app/out/default/views/users/albums/add.php create mode 100644 app/out/default/views/users/albums/edit.php create mode 100644 app/out/default/views/users/albums/list.php create mode 100644 app/out/default/views/users/groupes/add.php create mode 100644 app/out/default/views/users/groupes/edit.php create mode 100644 app/out/default/views/users/groupes/list.php create mode 100644 app/out/default/views/users/morceaux/add.php create mode 100644 app/out/default/views/users/morceaux/edit.php create mode 100644 app/out/default/views/users/morceaux/list.php create mode 100644 app/out/default/views/users/pistes/add.php create mode 100644 app/out/default/views/users/pistes/edit.php create mode 100644 app/out/default/views/users/pistes/list.php create mode 100644 mw_sourceml.php diff --git a/app/config.xml b/app/config.xml new file mode 100644 index 0000000..67903bd --- /dev/null +++ b/app/config.xml @@ -0,0 +1,16 @@ + + + + + parent + status + groupe + album + morceau + piste + xml + derivation + reference + + + \ No newline at end of file diff --git a/app/controllers/admin/cache.php b/app/controllers/admin/cache.php new file mode 100644 index 0000000..b45330a --- /dev/null +++ b/app/controllers/admin/cache.php @@ -0,0 +1,37 @@ +env(); + $data = $env->data(); + if(($CONFIG = $env->get_CONFIG()) !== false){ + if(!isset($CONFIG["cache_actif"])) $CONFIG["cache_actif"] = "0"; + if(!isset($CONFIG["cache_maj_auto"])) $CONFIG["cache_maj_auto"] = "0"; + if(!isset($CONFIG["cache_time"])) $CONFIG["cache_time"] = "72"; + $env->set_out("config", $CONFIG); + if($_POST){ + $env->set_out("config", $_POST); + if(preg_match("/^[0-9]+$/", $_POST["cache_time"])){ + $CONTINUE = true; + if($CONTINUE && $data->set_config("cache_actif", $_POST["cache_actif"])); + else $CONTINUE = false; + if($CONTINUE && $data->set_config("cache_maj_auto", $_POST["cache_maj_auto"])); + else $CONTINUE = false; + if($CONTINUE && $data->set_config("cache_time", $_POST["cache_time"])); + else $CONTINUE = false; + if($CONTINUE) $env->redirect( + $env->url("admin/cache"), + "la configuration du cache a été enregistrée" + ); + else $env->erreur("Impossible d'enregistrer la configuration du cache"); + } + else $env->message("durée de validité du cache doit être un nombre"); + } + } + else $env->erreur("Impossible de lire la configuration du cache"); + } + + } + +?> \ No newline at end of file diff --git a/app/controllers/admin/licences.php b/app/controllers/admin/licences.php new file mode 100644 index 0000000..0ea28df --- /dev/null +++ b/app/controllers/admin/licences.php @@ -0,0 +1,86 @@ +env(); + $data = $env->data(); + if($env->set_out("licences", $data->licences()) !== false) + { + } + else $env->erreur("impossible de lire la liste des licences"); + } + + function add(){ + $env = $this->env(); + $data = $env->data(); + if($_POST) + { $env->set_out("licence", $_POST); + if($_POST["nom"]) + { if + ( $data->add_licence + ( $_POST["nom"], + $_POST["url"] + ) + ) + $env->redirect + ( $env->url("admin/licences"), + "la licence ".$_POST["nom"]." a été ajoutée" + ); + else $env->erreur("Impossible d'ajouter la licence"); + } + else $env->message("merci de préciser un nom"); + } + } + + function edit(){ + $env = $this->env(); + $data = $env->data(); + if($env->set_out("licence", $data->licence($_GET[$env->param("id")]))) + { if($_POST) + { if($_POST["nom"]) + { $licence = $env->out("licence"); + $env->set_out("licence", $_POST); + if + ( $data->set_licence + ( $_GET[$env->param("id")], + $_POST["nom"], + $_POST["url"] + ) + ) + $env->redirect + ( $env->url("admin/licences"), + "la licence ".$licence["nom"]." a été modifiée" + ); + else $env->erreur("Impossible de mettre à jour la licence"); + } + else $env->message("Merci de préciser un nom"); + } + } + else $env->erreur("impossible de lire la licence"); + } + + function del(){ + $env = $this->env(); + $data = $env->data(); + if($env->set_out("licence", $data->licence($_GET[$env->param("id")]))) + { $licence = $env->out("licence"); + if(($res = $data->del_licence($_GET[$env->param("id")])) !== false) + { if($res === 1) $env->redirect + ( $env->url("admin/licences"), + "Des sources sur ce site utilisent cette licence, elle n'a pas été supprimée.", + 5 + ); + else $env->redirect + ( $env->url("admin/licences"), + "la licence ".$licence["nom"]." a été supprimée" + ); + } + else $env->erreur("Impossible de supprimer la licence"); + } + else $env->erreur("Impossible de lire les informations de cette licence"); + } + + } + +?> \ No newline at end of file diff --git a/app/controllers/admin/maintenance.php b/app/controllers/admin/maintenance.php new file mode 100644 index 0000000..7791b50 --- /dev/null +++ b/app/controllers/admin/maintenance.php @@ -0,0 +1,34 @@ +env(); + $data = $env->data(); + if($data->empty_source_cache()) + { $env->redirect + ( $env->url("admin/maintenance"), + "le cache a été vidé" + ); + } + else $env->erreur("Impossible de vider le cache"); + } + + function maj_all_xml(){ + $env = $this->env(); + $data = $env->data(); + if($data->maj_source_xml_all()) + { $env->redirect + ( $env->url("admin/maintenance"), + "les fichiers XML des sources ont été mis à jour" + ); + } + else $env->erreur("Impossible de mettre à jour les fichiers XML des sources"); + } + + } + +?> \ No newline at end of file diff --git a/app/controllers/admin/sourceml.php b/app/controllers/admin/sourceml.php new file mode 100644 index 0000000..cc674c1 --- /dev/null +++ b/app/controllers/admin/sourceml.php @@ -0,0 +1,97 @@ +env(); + $data = $env->data(); + if(($this->status = $data->source_status()) === false) + { return "Impossible de lire la liste des status de source"; + } + foreach($this->status as $id_source_status => $source_status) + { if($source_status["nom"] == "album") $this->album_status_id = $id_source_status; + if(isset($this->album_status_id) && isset($this->morceau_status_id)) break; + } + if(!isset($this->album_status_id)) return "Type de source inconnu: album"; + if(($this->groupes = $data->groupes()) === false) + { return "Impossible de lire la liste des groupes"; + } + $select = array("status" => $this->album_status_id); + if(($this->albums = $data->sources($select)) === false) return "impossible de lire la liste des albums"; + return true; + } + + function index(){ + $env = $this->env(); + $data = $env->data(); + if(!($groupes = $this->groupes)){ + $env->erreur("Impossible de lire la liste des groupes"); + return; + } + if(!($albums = $this->albums)){ + $env->erreur("Impossible de lire la liste des albums"); + return; + } + if(($CONFIG = $env->get_CONFIG()) === false){ + $env->erreur("Impossible de lire la configuration"); + return; + } + if($_POST){ + if($_POST["start_action"] == "sources/groupe"){ + if(!$data->set_config("start_action", "sources/groupe")){ + $env->erreur("impossible d'enregistrer la configuration"); + return; + } + } + elseif($_POST["start_action"] == "sources/groupe/view"){ + $params = array("id" => $_POST["groupe_param"]); + if( + !$data->set_config("start_action", "sources/groupe/view") + || !$data->set_config("start_action_params", @serialize($params)) + ){ + $env->erreur("impossible d'enregistrer la configuration"); + return; + } + } + elseif($_POST["start_action"] == "sources/album/view"){ + $params = array("album" => $_POST["album_param"]); + if( + !$data->set_config("start_action", "sources/album/view") + || !$data->set_config("start_action_params", @serialize($params)) + ){ + $env->erreur("impossible d'enregistrer la configuration"); + return; + } + } + elseif( + isset($CONFIG["start_action"]) + && ( + ($CONFIG["start_action"] == "sources/groupe") + || ($CONFIG["start_action"] == "sources/groupe/view") + || ($CONFIG["start_action"] == "sources/album/view") + ) + ){ + if(!$data->set_config("start_action", "")){ + $env->erreur("impossible d'enregistrer la configuration"); + return; + } + } + $env->redirect( + $env->url("admin/sourceml"), + "la configuration a été enregistrée" + ); + } + $env->set_out("groupes", $this->groupes); + $env->set_out("albums", $this->albums); + $env->set_out("config", $CONFIG); + } + + } + +?> \ No newline at end of file diff --git a/app/controllers/content/sources.php b/app/controllers/content/sources.php new file mode 100644 index 0000000..f76d956 --- /dev/null +++ b/app/controllers/content/sources.php @@ -0,0 +1,277 @@ +env(); + $this->validation_result = true; + $this->validate_status($env); + $this->validate_licences($env); + return true; + } + + function validate_status(){ + $env = $this->env(); + if($this->validation_result === true) + { $data = $env->data(); + if(($this->status = $data->source_status()) !== false) + { foreach($this->status as $id_source_status => $source_status) + { if($source_status["nom"] == "album") $this->album_status_id = $id_source_status; + if($source_status["nom"] == "morceau") $this->morceau_status_id = $id_source_status; + if($source_status["nom"] == "piste") $this->piste_status_id = $id_source_status; + if(isset($this->album_status_id) && isset($this->morceau_status_id) && isset($this->piste_status_id)) break; + } + if(!isset($this->album_status_id)) $this->validation_result = "Type de source inconnu: album"; + elseif(!isset($this->morceau_status_id)) $this->validation_result = "Type de source inconnu: morceau"; + elseif(!isset($this->piste_status_id)) $this->validation_result = "Type de source inconnu: piste"; + } + else $this->validation_result = "Impossible de lire la liste des status de source"; + } + } + + function validate_licences(){ + $env = $this->env(); + if($this->validation_result === true) + { $data = $env->data(); + if(($this->licences = $data->licences()) !== false) + { $env->set_out("licences", $this->licences); + } + else $this->validation_result = "Impossible de lire la liste des licences"; + } + } + + function validate_source(){ + $env = $this->env(); + if($this->validation_result === true) + { $data = $env->data(); + if(isset($_GET[$env->param("id")]) && $_GET[$env->param("id")]) + { if($this->source = $data->source($_GET[$env->param("id")])) + { + } + else $this->validation_result = "Impossible de lire les informations de la source"; + } + else $this->validation_result = "parametre source manquant"; + } + } + + function validate_groupes(){ + $env = $this->env(); + if($this->validation_result === true) + { $data = $env->data(); + if(($groupes = $data->groupes()) !== false) + { $env->set_out("groupes", $groupes); + if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) + { if(($this->groupe = $data->groupe($_GET[$env->param("groupe")])) !== false) + { $env->set_out("groupe", $groupe); + } + else $this->validation_result = "Impossible de lire les informations du groupe"; + } + } + else $this->validation_result = "Impossible de lire la liste des groupes"; + } + } + + function sources(){ + $env = $this->env(); + $this->validate_source($env); + if($this->validation_result === true) + { $data = $env->data(); + $sources = array("list" => array(), "total" => 0); + if($this->source) + { if(($source_ariane = $data->source_ariane($this->source["id"])) !== false) + { $this->url_params = array(); + foreach($source_ariane as $id_composition => $composition) + { if($composition["status"] == $this->morceau_status_id) $this->url_params["morceau"] = $id_composition; + elseif($composition["status"] == $this->album_status_id) $this->url_params["album"] = $id_composition; + } + if($this->source["status"] == $this->morceau_status_id) + { $this->source_param = $env->set_out("source_param", "piste"); + $this->source_controller = $env->set_out("source_controller", "piste"); + $this->url_params["morceau"] = $this->source["id"]; + } + elseif($this->source["status"] == $this->album_status_id) + { $this->source_param = $env->set_out("source_param", "morceau"); + $this->source_controller = $env->set_out("source_controller", "morceau"); + $this->url_params["album"] = $this->source["id"]; + } + $env->set_out("url_params", $this->url_params); + if(($_sources = $data->source_compositions(array("id_composition" => $this->source["id"]))) !== false) + { if(isset($_sources[$this->source["id"]]) && $_sources[$this->source["id"]]) + { foreach($_sources[$this->source["id"]] as $id_source) + { if(($sources["list"][$id_source] = $data->source($id_source, true)) !== false) + { $sources["total"]++; + } + else + { $this->erreur("Impossible de lire les informations de l'une des sources"); + break; + } + } + } + $sources["list"] = $data->ordonne($sources["list"], "ordre"); + $env->set_out("sources", $sources); + } + else $this->erreur("Impossible de lire la liste des sources"); + } + else $this->erreur("Impossible de lire le fil d'ariane"); + } + else $this->erreur("Impossible de lire les informations de la source"); + } + else $this->erreur($this->validation_result); + } + + function derivations(){ + $env = $this->env(); + $this->validate_source($env); + if($this->validation_result === true) + { $data = $env->data(); + $derivations = array("list" => array(), "total" => 0); + if($this->source) + { if(($source_ariane = $data->source_ariane($this->source["id"])) !== false) + { $this->url_params = array(); + foreach($source_ariane as $id_composition => $composition) + { if($composition["status"] == $this->morceau_status_id) $this->url_params["morceau"] = $id_composition; + elseif($composition["status"] == $this->album_status_id) $this->url_params["album"] = $id_composition; + } + if($this->source["status"] == $this->piste_status_id) + { $this->source_param = $env->set_out("source_param", "piste"); + $this->source_controller = $env->set_out("source_controller", "piste"); + $this->url_params["piste"] = $this->source["id"]; + } + elseif($this->source["status"] == $this->morceau_status_id) + { $this->source_param = $env->set_out("source_param", "morceau"); + $this->source_controller = $env->set_out("source_controller", "morceau"); + $this->url_params["morceau"] = $this->source["id"]; + } + $env->set_out("url_params", $this->url_params); + if(($_derivations = $data->source_derivations(array("derivation" => $this->source["id"]))) !== false) + { foreach($_derivations as $id_derivation => $derivation) + { if(($derivations["list"][$id_derivation] = $data->source($id_derivation, true)) !== false) + { $derivations["total"]++; + } + else + { $this->erreur("Impossible de lire les informations de l'une des derivations"); + break; + } + } + $derivations["list"] = $data->ordonne($derivations["list"], "ordre"); + $env->set_out("sources", $derivations); + } + else $this->erreur("Impossible de lire la liste des derivations"); + } + else $this->validation_result = "Impossible de lire le fil d'ariane"; + } + else $this->erreur("Impossible de lire les informations de la source"); + } + else $this->erreur($this->validation_result); + } + + function xml_form(){ + $env = $this->env(); + if(isset($_GET[$env->param("form")])) + { $data = $env->data(); + $form_params = array(); + if(isset($_GET[$env->param("derivation")])) + { if($_GET[$env->param("form")] == "edit") + { if(($source_derivation = $data->source_derivation($_GET[$env->param("derivation")])) !== false) + { $source = array + ( "id" => $source_derivation["id"], + "xml" => array + ( "url" => $source_derivation["derivation"], + "content" => "", + "use_edit_content" => false + ) + ); + $derivation_edit_file = $data->derivation_edit_xml_path($source_derivation["id_source"], $source_derivation["id"]); + if(file_exists($derivation_edit_file)) + { if(($derivation_edit_content = $data->get_edit_derivation_content($source_derivation["id_source"], $source_derivation["id"])) !== false) + { if(($source = $data->source_xml_read($source_derivation["derivation"], $derivation_edit_content)) !==false) + { $source["xml"] = array + ( "url" => $source_derivation["derivation"], + "content" => $derivation_edit_content, + "use_edit_content" => true + ); + } + else $this->erreur("Impossible de lire le XML de la source"); + } + else $this->erreur("Impossible de lire le XML de la source"); + } + else + { if(($source = $data->source_xml_read($source_derivation["derivation"])) === false) + { $source = $data->empty_source(); + } + } + $source["id_source"] = $source_derivation["id_source"]; + $source["id"] = $_GET[$env->param("derivation")]; + $form_params["maj_url"] = $env->url("users/morceaux/maj_xml", array("id" => $_GET[$env->param("derivation")], "xml" => "derivation")); + } + } + elseif($_GET[$env->param("form")] == "add"){ + $source = $data->empty_source(); + $source["id"] = $_GET[$env->param("derivation")]; + $source["xml"] = array( + "use_edit_content" => false, + "content" => "" + ); + } + $form_params["name"] = "derivation"; + $form_params["label"] = "dérive de » "; + $form_params["can_delete"] = true; + $form_params["id"] = $_GET[$env->param("derivation")]; + } + elseif(isset($_GET[$env->param("reference")])) + { + } + $env->set_out("form_params", $form_params); + $env->set_out("xml_form_source", $source); + } + else $this->erreur("Parametres invalides pour le formulaire"); + } + + function xml(){ + $env = $this->env(); + $this->validate_source($env); + if($this->validation_result === true) + { $data = $env->data(); + $xml = ""; + if($this->source) + { if($this->source = $data->load_source($this->source)) + { $xml = + "
"
+            .htmlentities
+            ( $this->source["reference"] ? $this->source["reference"]["xml"]["content"] : $this->source["xml"]["content"],
+              ENT_COMPAT,
+              "UTF-8"
+            )
+            ."
"; + } + else $this->erreur("Impossible de lire les informations XML de la source"); + } + else $this->erreur("Impossible de lire les informations de la source"); + } + else $this->erreur($this->validation_result); + echo $xml; + exit; + } + + function erreur($content) + { echo $content; + exit; + } + + } + +?> \ No newline at end of file diff --git a/app/controllers/forms/sourceml.php b/app/controllers/forms/sourceml.php new file mode 100644 index 0000000..46fc014 --- /dev/null +++ b/app/controllers/forms/sourceml.php @@ -0,0 +1,97 @@ +env(); + if($this->forms_contact_mod = $env->get_controller("forms/contact")){ + return $this->forms_contact_mod->validate(); + } + return "impossible de trouver le controlleur forms/contact"; + } + + function contact_author(){ + $env = $this->env(); + if(file_exists($env->path("mw_dir")."libs/ptitcaptcha.php")) require_once $env->path("mw_dir")."libs/ptitcaptcha.php"; + $data = $env->data(); + if(($status = $data->source_status()) !== false) + { foreach($status as $id_source_status => $source_status) + { if($source_status["nom"] == "album") $album_status_id = $id_source_status; + if(isset($album_status_id)) break; + } + if(isset($album_status_id)) + { if($groupe = $data->groupe($_GET[$env->param("id")])) + { if($groupe["contact_form"] && $groupe["email"]) + { $env->set_out("groupe", $groupe); + $select = array("status" => $album_status_id); + $select["id_groupe"] = $groupe["id"]; + if(($albums = $data->sources($select)) !== false) + { $env->set_out("albums", $albums); + if($_POST) + { if + ( $this->send + ( $env, + $_POST["email"], + "[".$env->config("site_name")." - ".$groupe["nom"]."] nouveau message", + $_POST["message"], + $groupe["email"], + $groupe["captcha"] + ) + ) + { $env->redirect + ( $env->url("sources/groupe/view", array("id" => $_GET[$env->param("id")])), + "Le message a été envoyé" + ); + } + } + } + else $env->erreur("impossible de lire la liste des albums"); + } + else + { $env->run("sources/groupe/view", array("get" => array("id" => $groupe["id"]))); + return; + } + } + else $env->erreur("Impossible de lire les informations du groupe"); + } + else $env->erreur("Type de source inconnu: album"); + } + else $env->erreur("Impossible de lire la liste des status de source"); + } + + function send(&$env, $from, $titre, $message, $dest, $captcha) + { $env->set_out("ENVOYE", false); + if($captcha && !class_exists("PtitCaptchaHelper")){ + $env->erreur("fichier du captcha introuvable"); + return false; + } + if(!$captcha || PtitCaptchaHelper::checkCaptcha()) + { if($from) + { if($dest) + { if + ( mail + ( $dest, + $titre, + $message, + "From: ".$from."\r\n" + ."Reply-To: ".$from."\r\n" + ) + ) + { $env->set_out("ENVOYE", true); + return true; + } + else $env->erreur("Erreur à l'envoi du mail"); + } + else $env->erreur("Impossible de trouver l'email du destinataire"); + } + else $env->message("merci de préciser un email"); + } + else $env->message("anti-spam incorrect"); + return false; + } + + } + +?> \ No newline at end of file diff --git a/app/controllers/sources/album.php b/app/controllers/sources/album.php new file mode 100644 index 0000000..3640ac8 --- /dev/null +++ b/app/controllers/sources/album.php @@ -0,0 +1,79 @@ +env(); + if($this->content_sources_mod = $env->get_controller("content/sources")) + { $this->content_sources_mod->validation_result = true; + $this->content_sources_mod->validate_status($env); + $this->content_sources_mod->validate_licences($env); + return $this->content_sources_mod->validation_result; + } + return "impossible de valider le module"; + } + + function index(){ + $env = $this->env(); + $data = $env->data(); + if(isset($this->content_sources_mod->licences) && $this->content_sources_mod->licences !== false) + { $env->set_out("licences", $this->content_sources_mod->licences); + if(($groupes = $data->groupes()) !== false) + { $env->set_out("groupes", $groupes); + $select = array(); + $select["status"] = $this->content_sources_mod->album_status_id; + $select["order_by"] = "ordre"; + if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $select["id_groupe"] = $_GET[$env->param("groupe")]; + $select["start"] = isset($_GET[$env->param("start")]) && $_GET[$env->param("start")] ? $_GET[$env->param("start")] : 0; + if(($albums = $data->sources($select)) !== false) + { $env->set_out("albums", $albums); + if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) + { if(($groupe = $data->groupe($_GET[$env->param("groupe")])) !== false) + { $env->set_out("groupe", $groupe); + } + else $env->erreur("Impossible de lire les informations du groupe"); + } + } + else $env->erreur("Impossible de lire la liste des albums"); + } + else $env->erreur("Impossible de lire la liste des groupes"); + } + } + + function view(){ + $env = $this->env(); + $data = $env->data(); + if(isset($this->content_sources_mod->licences) && $this->content_sources_mod->licences !== false) + { $env->set_out("licences", $this->content_sources_mod->licences); + if(isset($_GET[$env->param("album")]) && $_GET[$env->param("album")]) + { if($album = $data->source($_GET[$env->param("album")], true)) + { $env->set_out("album", $album); + if($groupe = $data->get_admin_groupe($album["groupes"])) + { $env->set_out("groupe", $groupe); + $select = array("status" => $this->content_sources_mod->album_status_id); + $select["id_groupe"] = $groupe["id"]; + if(($albums = $data->sources($select)) !== false) + { $env->set_out("albums", $albums); + $select = array("status" => $this->content_sources_mod->morceau_status_id); + $select["id_composition"] = $album["id"]; + $select["start"] = isset($_GET[$env->param("start")]) && $_GET[$env->param("start")] ? $_GET[$env->param("start")] : 0; + if(($morceaux = $data->sources($select)) !== false) + { $env->set_out("morceaux", $morceaux); + } + else $env->erreur("impossible de lire la liste des morceaux"); + } + else $env->erreur("impossible de lire la liste des albums"); + } + else $env->erreur("Impossible de lire les informations du groupe"); + } + else $env->erreur("Impossible de lire les informations de l'album"); + } + else $env->erreur("parametre d'album manquant"); + } + } + + } + +?> \ No newline at end of file diff --git a/app/controllers/sources/groupe.php b/app/controllers/sources/groupe.php new file mode 100644 index 0000000..3400d7e --- /dev/null +++ b/app/controllers/sources/groupe.php @@ -0,0 +1,55 @@ +env(); + if($this->content_sources_mod = $env->get_controller("content/sources")) + { $this->content_sources_mod->validation_result = true; + $this->content_sources_mod->validate_status($env); + $this->content_sources_mod->validate_licences($env); + return $this->content_sources_mod->validation_result; + } + return "impossible de valider le module"; + } + + function index(){ + $env = $this->env(); + $data = $env->data(); + if + ( ( $groupes = $data->groupes + ( null, + isset($_GET[$env->param("start")]) ? $_GET[$env->param("start")] : 0 + ) + ) !== false + ) $env->set_out("groupes", $groupes); + else $env->erreur("Impossible de lire la liste des groupes"); + } + + function view(){ + $env = $this->env(); + $data = $env->data(); + if(isset($this->content_sources_mod->licences) && $this->content_sources_mod->licences !== false) + { $env->set_out("licences", $this->content_sources_mod->licences); + if(isset($_GET[$env->param("id")]) && $_GET[$env->param("id")]) + { if(($groupe = $data->groupe($_GET[$env->param("id")])) !== false) + { $env->set_out("groupe", $groupe); + $select = array("status" => $this->content_sources_mod->album_status_id); + $select["id_groupe"] = $groupe["id"]; + if(($albums = $data->sources($select)) !== false) + { $env->set_out("albums", $albums); + } + else $env->erreur("impossible de lire la liste des albums"); + } + else $env->erreur("Impossible de lire les informations du groupe"); + } + else $env->erreur("parametre de groupe manquant"); + } + else $env->erreur("Impossible de lire la liste des licences"); + } + + } + +?> \ No newline at end of file diff --git a/app/controllers/sources/morceau.php b/app/controllers/sources/morceau.php new file mode 100644 index 0000000..802430a --- /dev/null +++ b/app/controllers/sources/morceau.php @@ -0,0 +1,109 @@ +env(); + if($this->content_sources_mod = $env->get_controller("content/sources")) + { $this->content_sources_mod->validation_result = true; + $this->content_sources_mod->validate_status($env); + $this->content_sources_mod->validate_licences($env); + return $this->content_sources_mod->validation_result; + } + return "impossible de valider le module"; + } + + function index(){ + $env = $this->env(); + $data = $env->data(); + if($this->content_sources_mod->licences !== false) + { $env->set_out("licences", $this->content_sources_mod->licences); + if(($groupes = $data->groupes()) !== false) + { $env->set_out("groupes", $groupes); + $groupe = null; + $album = null; + if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) + { if(isset($groupes["list"][$_GET[$env->param("groupe")]])) + { $groupe = $groupes["list"][$_GET[$env->param("groupe")]]; + $env->set_out("groupe", $groupe); + } + else $groupe = false; + } + if($groupe !== false) + { if(isset($_GET[$env->param("album")]) && $_GET[$env->param("album")]) + { if(($album = $data->source($_GET[$env->param("album")], true)) !== false) + { $env->set_out("album", $album); + if(!isset($groupe)) + { $groupe = $data->get_admin_groupe($album["groupes"]); + if(!$groupe) $groupe = false; + } + } + } + } + if($groupe !== false) + { $env->set_out("groupe", $groupe); + if($album !== false) + { $select = array("status" => $this->content_sources_mod->album_status_id); + if(isset($groupe)) $select["id_groupe"] = $groupe["id"]; + if(($albums = $data->sources($select)) !== false) + { $env->set_out("albums", $albums); + $select = array(); + $select["status"] = $this->content_sources_mod->morceau_status_id; + $select["order_by"] = "ordre"; + if(isset($groupe)) $select["id_groupe"] = $groupe["id"]; + if(isset($_GET[$env->param("album")])) $select["id_composition"] = $_GET[$env->param("album")]; + $select["start"] = isset($_GET[$env->param("start")]) && $_GET[$env->param("start")] ? $_GET[$env->param("start")] : 0; + if(($morceaux = $data->sources($select, true)) !== false) $env->set_out("morceaux", $morceaux); + else $env->erreur("Impossible de lire la liste des morceaux"); + } + else $env->erreur("impossible de lire la liste des albums"); + } + else $env->erreur("Impossible de lire les informations de l'album"); + } + else $env->erreur("Impossible de lire les informations du groupe"); + } + else $env->erreur("Impossible de lire la liste des groupes"); + } + else $env->erreur("Impossible de lire la liste des licences"); + } + + function view(){ + $env = $this->env(); + $data = $env->data(); + if($this->content_sources_mod->licences !== false) + { $env->set_out("licences", $this->content_sources_mod->licences); + if(isset($_GET[$env->param("morceau")]) && $_GET[$env->param("morceau")]) + { if($morceau = $data->source($_GET[$env->param("morceau")], true)) + { $env->set_out("morceau", $morceau); + if($groupe = $data->get_admin_groupe($morceau["groupes"])) + { $env->set_out("groupe", $groupe); + $select = array("status" => $this->content_sources_mod->album_status_id); + $select["id_groupe"] = $groupe["id"]; + if(($albums = $data->sources($select)) !== false) + { $env->set_out("albums", $albums); + if(($ariane = $data->source_ariane($morceau["id"])) !== false) + { $ariane = array_reverse($ariane); + $album = null; + foreach($ariane as $id_ariane => $source_ariane) + { if(!isset($album)) $album = $source_ariane; + } + if($album) $env->set_out("album", $album); + } + else $env->erreur("Impossible de lire le fil d'ariane"); + } + else $env->erreur("impossible de lire la liste des albums"); + } + else $env->erreur("Impossible de lire les informations du groupe"); + } + else $env->erreur("Impossible de lire les informations du morceau"); + } + else $env->erreur("identifiant de morceau manquant"); + } + else $env->erreur("Impossible de lire la liste des licences"); + } + + } + +?> \ No newline at end of file diff --git a/app/controllers/sources/piste.php b/app/controllers/sources/piste.php new file mode 100644 index 0000000..668892f --- /dev/null +++ b/app/controllers/sources/piste.php @@ -0,0 +1,114 @@ +env(); + if($this->content_sources_mod = $env->get_controller("content/sources")) + { $this->content_sources_mod->validation_result = true; + $this->content_sources_mod->validate_status($env); + $this->content_sources_mod->validate_licences($env); + return $this->content_sources_mod->validation_result; + } + return "impossible de valider le module"; + } + + function index(){ + $env = $this->env(); + $data = $env->data(); + if(isset($this->content_sources_mod->licences) && $this->content_sources_mod->licences !== false) + { $env->set_out("licences", $this->content_sources_mod->licences); + if(($groupes = $data->groupes()) !== false) + { $env->set_out("groupes", $groupes); + $groupe = null; + $morceau = null; + if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) + { if(isset($groupes["list"][$_GET[$env->param("groupe")]])) + { $groupe = $groupes["list"][$_GET[$env->param("groupe")]]; + $env->set_out("groupe", $groupe); + } + else $groupe = false; + } + if($groupe !== false) + { if(isset($_GET[$env->param("morceau")]) && $_GET[$env->param("morceau")]) + { if(($morceau = $data->source($_GET[$env->param("morceau")], true)) !== false) + { $env->set_out("morceau", $morceau); + if(!isset($groupe)) + { $groupe = $data->get_admin_groupe($morceau["groupes"]); + if(!$groupe) $groupe = false; + } + } + } + } + if($groupe !== false) + { $env->set_out("groupe", $groupe); + if($morceau !== false) + { $select = array("status" => $this->content_sources_mod->morceau_status_id); + if(isset($groupe)) $select["id_groupe"] = $groupe["id"]; + if(($morceaux = $data->sources($select)) !== false) + { $env->set_out("morceaux", $morceaux); + $select = array(); + $select["status"] = $this->content_sources_mod->piste_status_id; + $select["order_by"] = "ordre"; + if(isset($groupe)) $select["id_groupe"] = $groupe["id"]; + if(isset($_GET[$env->param("morceau")])) $select["id_composition"] = $_GET[$env->param("morceau")]; + $select["start"] = isset($_GET[$env->param("start")]) && $_GET[$env->param("start")] ? $_GET[$env->param("start")] : 0; + if(($pistes = $data->sources($select, true)) !== false) $env->set_out("pistes", $pistes); + else $env->erreur("Impossible de lire la liste des pistes"); + } + else $env->erreur("impossible de lire la liste des morceaux"); + } + else $env->erreur("Impossible de lire les informations du morceau"); + } + else $env->erreur("Impossible de lire les informations du groupe"); + } + else $erreur = "impossible de lire la liste des groupes"; + } + else $env->erreur("impossible de lire la liste des licences"); + } + + function view(){ + $env = $this->env(); + $data = $env->data(); + if(isset($this->content_sources_mod->licences) && $this->content_sources_mod->licences !== false) + { $env->set_out("licences", $this->content_sources_mod->licences); + if(isset($_GET[$env->param("piste")]) && $_GET[$env->param("piste")]) + { if($piste = $data->source($_GET[$env->param("piste")], true)) + { $env->set_out("piste", $piste); + if($groupe = $data->get_admin_groupe($piste["groupes"])) + { $env->set_out("groupe", $groupe); + $select = array("status" => $this->content_sources_mod->album_status_id); + $select["id_groupe"] = $groupe["id"]; + if(($albums = $data->sources($select)) !== false) + { $env->set_out("albums", $albums); + if(($ariane = $data->source_ariane($piste["id"])) !== false) + { $ariane = array_reverse($ariane); + $morceau = null; + $album = null; + foreach($ariane as $id_ariane => $source_ariane) + { if(!isset($morceau)) $morceau = $source_ariane; + else + { if(!isset($album)) $album = $source_ariane; + } + } + if($morceau) $env->set_out("morceau", $morceau); + if($album) $env->set_out("album", $album); + } + else $env->erreur("Impossible de lire le fil d'ariane"); + } + else $env->erreur("impossible de lire la liste des albums"); + } + else $env->erreur("Impossible de lire les informations du groupe"); + } + else $env->erreur("Impossible de lire les informations de la source"); + } + else $env->erreur("parametre de piste manquant"); + } + else $env->erreur("impossible de lire la liste des licences"); + } + + } + +?> \ No newline at end of file diff --git a/app/controllers/users/albums.php b/app/controllers/users/albums.php new file mode 100644 index 0000000..b26e200 --- /dev/null +++ b/app/controllers/users/albums.php @@ -0,0 +1,260 @@ +env(); + $data = $env->data(); + if(($this->status = $data->source_status()) !== false) + { foreach($this->status as $id_source_status => $source_status) + { if($source_status["nom"] == "album") + { $this->album_status_id = $id_source_status; + break; + } + } + if(isset($this->album_status_id)) + { if($this->user = $env->user()) + { if(($this->groupes = $data->groupes($this->user["id"])) !== false) + { $env->set_out("groupes", $this->groupes); + if($env->etat("action") == "edit" || $env->etat("action") == "del") + { if(($this->album = $data->source($_GET[$env->param("id")], true)) !== false && $this->album) + { + } + else return "Impossible de lire les informations de l'album"; + } + if($env->etat("action") == "add" || $env->etat("action") == "edit") + { if(($this->licences = $data->licences()) !== false) + { $env->set_out("licences", $this->licences); + } + else return "Impossible de lire la liste des licences"; + } + } + else return "Impossible de lire la liste des groupes"; + } + else return "Vous devez être identifier pour accéder à cette page"; + } + else return "Type de source inconnu: album"; + } + else return "Impossible de lire la liste des status de source"; + return true; + } + + function index(){ + $env = $this->env(); + $data = $env->data(); + $select = array(); + $select["status"] = $this->album_status_id; + $select["id_user"] = $this->user["id"]; + $select["order_by"] = "ordre"; + $select["start"] = isset($_GET[$env->param("start")]) && $_GET[$env->param("start")] ? $_GET[$env->param("start")] : 0; + if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $select["id_groupe"] = $_GET[$env->param("groupe")]; + if(($albums = $data->sources($select)) !== false) + { foreach($albums["list"] as $id_album => $album) + { $albums["list"][$id_album]["permissions"] = $data->source_permissions($albums["list"][$id_album], $this->user["id"]); + } + if($_POST) + { $OK = true; + foreach($albums["list"] as $id_album => $album) + { if(isset($_POST["ordre_".$id_album])) + { if($data->set_source_info($id_album, "ordre", $_POST["ordre_".$id_album]) === false) + { $OK = false; + break; + } + } + } + if($OK) + { $get_params = array(); + if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $get_params["groupe"] = $_GET[$env->param("groupe")]; + $env->redirect + ( $env->url("users/albums", $get_params), + "l'ordre des albums a été enregistré" + ); + } + else $env->erreur("Impossible d'enregistrer l'ordre des albums"); + } + $env->set_out("albums", $albums); + } + else $env->erreur("Impossible de lire la liste des albums"); + } + + function add(){ + $env = $this->env(); + $data = $env->data(); + if($data->check_user_uploads_dir()) + { $web_path = $env->path("web"); + $upload_dir = $env->path("content")."uploads/".$this->user["id"]; + $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$upload_dir; + $this->album = $data->empty_source(); + $source_infos = array + ( "date_inscription" => date("Y")."-".date("m")."-".date("d"), + "ordre" => 0 + ); + if($_POST) + { if(($groupe = $data->groupe($_POST["id_groupe"])) !== false) + { $groupe["id_groupe_status"] = $data->id_groupe_status_admin(); + $env->set_out("groupe", $groupe); + $this->album["groupes"] = array($groupe["id"] => $groupe); + $this->album["titre"] = trim($_POST["titre"]); + $this->album["licence"] = array + ( "id" => $_POST["licence"] + ); + $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"]; + $source_infos["description"] = $_POST["description"]; + foreach($_POST as $post_key => $post_value) + { if(substr($post_key, 0, 13) == "document_nom_") + { if($id_document = substr($post_key, 13)) + { $this->album["documents"][$id_document] = array + ( "nom" => $_POST["document_nom_".$id_document], + "url" => $_POST["document_url_".$id_document] + ); + } + } + } + if($this->album["titre"]) + { if(($image = $data->upload("image", $upload_dir)) !== false) + { if($image) $source_infos["image"] = $this->user["id"]."/".$image; + if + ( $data->add_source + ( $this->album["groupes"], + $this->album["titre"], + $this->album_status_id, + $this->album["licence"]["id"], + $this->album["documents"], + $this->album["reference"], + $this->album["derivations"], + $source_infos + ) + ) $env->redirect + ( $env->url("users/albums"), + "l'album a été ajouté" + ); + else $env->erreur("Impossible d'ajouter l'album"); + } + else $env->erreur("Impossible d'uploader l'image"); + } + else $env->message("merci de préciser un titre pour l'album"); + } + else $env->erreur("Impossible de lire les informations du groupe"); + } + foreach($source_infos as $info_key => $info_value) $this->album[$info_key] = $info_value; + $env->set_out("album", $this->album); + } + else $env->erreur("Impossible de creer le repertoire utilisateur"); + } + + function edit(){ + $env = $this->env(); + $data = $env->data(); + $this->album["premissions"] = $data->source_permissions($this->album, $this->user["id"]); + if($this->album["premissions"]["editeur"]) + { if($data->check_user_uploads_dir()) + { $web_path = $env->path("web"); + $upload_dir = $env->path("content")."uploads/".$this->user["id"]; + $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$upload_dir; + $source_infos = array + ( "date_inscription" => $this->album["date_inscription"], + "ordre" => $this->album["ordre"], + "date_creation" => $this->album["date_creation"], + "description" => $this->album["description"], + "image" => $this->album["image"] + ); + $env->set_out("groupe", $data->get_admin_groupe($this->album["groupes"])); + if($_POST) + { if(($groupe = $data->groupe($_POST["id_groupe"])) !== false) + { $env->set_out("groupe", $groupe); + $groupe["id_groupe_status"] = $data->id_groupe_status_admin(); + $this->album["groupes"] = array($groupe["id"] => $groupe); + $this->album["titre"] = trim($_POST["titre"]); + $this->album["licence"] = array + ( "id" => $_POST["licence"] + ); + $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"]; + $source_infos["description"] = $_POST["description"]; + foreach($_POST as $post_key => $post_value) + { if(substr($post_key, 0, 13) == "document_nom_") + { if($id_document = substr($post_key, 13)) + { $this->album["documents"][$id_document] = array + ( "nom" => $_POST["document_nom_".$id_document], + "url" => $_POST["document_url_".$id_document] + ); + } + } + } + if($this->album["titre"]) + { if(isset($_POST["del_image"])) + { if($this->album["image"]) + { if(@unlink($env->path("content")."uploads/".$this->album["image"])) $this->album["image"] = ""; + else + { $this->album["image"] = false; + $env->erreur("Impossible d'effacer l'image"); + } + } + else $this->album["image"] = ""; + } + else + { if(($up_image = $data->upload("image", $upload_dir)) !== false) + { if($up_image) $this->album["image"] = $this->user["id"]."/".$up_image; + } + else + { $env->erreur("Impossible d'uploader l'image"); + return; + } + } + if($this->album["image"] !== false) + { if($this->album["image"]) $source_infos["image"] = $this->album["image"]; + if + ( $data->set_source + ( $this->album["id"], + $this->album["groupes"], + $this->album["titre"], + $this->album_status_id, + $this->album["licence"]["id"], + $this->album["documents"], + $this->album["reference"], + $this->album["derivations"], + $source_infos + ) + ) $env->redirect + ( $env->url("users/albums/edit", array("id" => $this->album["id"])), + "l'album a été modifié" + ); + else $env->erreur("Impossible de modifier l'album"); + } + else $env->erreur("Impossible d'uploader l'image"); + } + else $env->message("merci de préciser un titre pour l'album"); + } + else $env->erreur("Impossible de lire les informations du groupe"); + } + $env->set_out("album", $this->album); + } + else $env->erreur("Impossible de creer le repertoire utilisateur"); + } + else $env->erreur("Vous n'avez pas la permission de modifier cet album"); + } + + function del(){ + $env = $this->env(); + $data = $env->data(); + $this->album["premissions"] = $data->source_permissions($this->album, $this->user["id"]); + if($this->album["premissions"]["admin"]) + { if($data->del_source($this->album["id"])) + { $env->redirect + ( $env->url("users/albums"), + "l'album a été supprimé" + ); + } + else $env->erreur("Impossible de supprimer l'album"); + } + else $env->erreur("Vous n'avez pas la permission de supprimer cet album"); + } + + } + +?> \ No newline at end of file diff --git a/app/controllers/users/groupes.php b/app/controllers/users/groupes.php new file mode 100644 index 0000000..8730e2c --- /dev/null +++ b/app/controllers/users/groupes.php @@ -0,0 +1,183 @@ +env(); + $data = $env->data(); + if($this->user = $env->user()) + { if($env->etat("action") == "edit" || $env->etat("action") == "del") + { if + ( ( $this->groupe = $data->groupe + ( $_GET[$env->param("id")] + ) + ) !== false + && $this->groupe + ) + { if($this->groupe["id_user"] == $this->user["id"]) + { return true; + } + else return "Vous n'est pas autorisé à modifier ce groupe"; + } + else return "Impossible de lire les informations du groupe"; + } + else return true; + } + return "Vous devez être identifier pour accéder à cette page"; + } + + function index(){ + $env = $this->env(); + $data = $env->data(); + if + ( $env->set_out + ( "groupes", + $data->groupes + ( $this->user["id"], + isset($_GET[$env->param("start")]) ? $_GET[$env->param("start")] : 0 + ) + ) !== false + ) + { + } + else $env->erreur("Impossible de lire la liste des groupes"); + } + + function add(){ + $env = $this->env(); + $data = $env->data(); + if($data->check_user_uploads_dir()) + { $web_path = $env->path("web"); + $upload_dir = $env->path("content")."uploads/".$this->user["id"]; + $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$upload_dir; + if($_POST) + { $env->set_out("groupe", $_POST); + if(($image = $data->upload("image", $upload_dir)) !== false){ + if(trim($_POST["nom"])) + { if(($exists = $data->groupe_exists($_POST["nom"])) !== false) + { if(!isset($_POST["contact_form"]) || trim($_POST["email"])) + { if($exists == 0) + { if + ( $data->add_groupe + ( $this->user["id"], + $_POST["nom"], + $image ? $this->user["id"]."/".$image : null, + $_POST["description"], + $_POST["email"], + isset($_POST["contact_form"]) ? 1 : 0, + isset($_POST["captcha"]) ? 1 : 0 + ) + ) $env->redirect + ( $env->url("users/groupes"), + "le groupe a été ajouté" + ); + else $env->erreur("Impossible d'ajouter le groupe"); + } + else $env->message("Un groupe avec ce nom existe déjà"); + } + else $env->message("merci de préciser un email pour le formulaire de contact"); + } + else $env->erreur("Impossible de savoir si le groupe existe déjà"); + } + else $env->message("merci de préciser un nom pour le groupe"); + } + else $env->erreur("Impossible d'uploader l'image"); + } + } + else $env->erreur("Impossible de creer le repertoire utilisateur"); + } + + function edit(){ + $env = $this->env(); + $data = $env->data(); + if($data->check_user_uploads_dir()) + { $web_path = $env->path("web"); + $upload_dir = $env->path("content")."uploads/".$this->user["id"]; + $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$upload_dir; + if($env->set_out("groupe", $this->groupe)) + { $groupe = $env->out("groupe"); + if($_POST) + { $id = $groupe["id"]; + $nom = $groupe["nom"]; + $image = $groupe["image"]; + $_POST["image"] = $image ? $_SESSION["upload_dir"]."/".$image : ""; + $env->set_out("groupe", $_POST); + if(isset($_POST["del_image"])) + { if($image) + { if(@unlink($env->path("content")."uploads/".$image)) $image = ""; + else + { $image = false; + $env->erreur("Impossible d'effacer l'image"); + } + } + else $image = ""; + } + else + { if(($new_image = $data->upload("image", $upload_dir)) !== false) + { if($new_image) $image = $this->user["id"]."/".$new_image; + } + else $env->erreur("Impossible d'uploader l'image"); + } + if($image !== false) + { if(trim($_POST["nom"])) + { if(($exists = $data->groupe_exists($_POST["nom"], $this->groupe["id"])) !== false) + { if(!$exists) + { if(!isset($_POST["contact_form"]) || trim($_POST["email"])) + { if + ( $data->set_groupe + ( $id, + $_POST["nom"], + $image, + $_POST["description"], + $_POST["email"], + isset($_POST["contact_form"]) ? 1 : 0, + isset($_POST["captcha"]) ? 1 : 0 + ) + ) $env->redirect + ( $env->url("users/groupes/edit", array("id" => $_GET[$env->param("id")])), + "le groupe a été modifié" + ); + else $env->erreur("Impossible de modifier le groupe"); + } + else $env->message("merci de préciser un email pour le formulaire de contact"); + } + else $env->message("Un groupe avec ce nom existe déjà"); + } + else $env->erreur("Impossible de savoir si le groupe existe déjà"); + } + else $env->message("merci de préciser un nom pour le groupe"); + } + } + else + { $env->set_out("groupe", $groupe); + } + } + else $env->erreur("Impossible de lire les informations du groupe"); + } + else $env->erreur("Impossible de creer le repertoire utilisateur"); + } + + function del(){ + $env = $this->env(); + $data = $env->data(); + if(($res = $data->del_groupe($this->groupe["id"])) !== false) + { if($res === 1) $env->redirect + ( $env->url("users/groupes"), + "Ce groupe a des sources sur ce site, il n'a pas été supprimé.", + 5 + ); + else $env->redirect + ( $env->url("users/groupes"), + "le groupe a été supprimé" + ); + } + else $env->erreur("Impossible de supprimer le groupe"); + } + + } + +?> \ No newline at end of file diff --git a/app/controllers/users/morceaux.php b/app/controllers/users/morceaux.php new file mode 100644 index 0000000..ba58bda --- /dev/null +++ b/app/controllers/users/morceaux.php @@ -0,0 +1,435 @@ +env(); + $data = $env->data(); + if(($this->status = $data->source_status()) !== false) + { foreach($this->status as $id_source_status => $source_status) + { if($source_status["nom"] == "album") $this->album_status_id = $id_source_status; + if($source_status["nom"] == "morceau") $this->morceau_status_id = $id_source_status; + if(isset($this->album_status_id) && isset($this->morceau_status_id)) break; + } + if(isset($this->album_status_id) && isset($this->morceau_status_id)) + { if($this->user = $env->user()) + { if(($this->groupes = $data->groupes($this->user["id"])) !== false){ + $env->set_out("groupes", $this->groupes); + $this->albums = array(); + if($this->groupes["total"] > 0) + { $select = array(); + $select["status"] = $this->album_status_id; + $select["id_user"] = $this->user["id"]; + foreach($this->groupes["list"] as $id_groupe => $groupe) + { $select["id_groupe"] = $id_groupe; + if(($albums = $data->sources($select)) !== false) + { $this->albums[$id_groupe] = $albums["list"]; + } + else $this->albums = false; + } + } + if($this->albums !== false) + { $env->set_out("albums", $this->albums); + if($env->etat("action") == "edit" || $env->etat("action") == "del" || $env->etat("action") == "maj_xml") + { if($this->morceau = $data->source($_GET[$env->param("id")], true)) + { + } + else return "Impossible de lire les informations du morceau"; + } + if($env->etat("action") == "add" || $env->etat("action") == "edit") + { if(($this->licences = $data->licences()) !== false) + { $env->set_out("licences", $this->licences); + } + else return "Impossible de lire la liste des licences"; + } + } + else return "Impossible de lire la liste des albums"; + } + else return "Impossible de lire la liste des groupes"; + } + else return "Vous devez être identifier pour accéder à cette page"; + } + else + { if(!isset($this->album_status_id)) return "Type de source inconnu: album"; + return "Type de source inconnu: morceau"; + } + } + else return "Impossible de lire la liste des status de source"; + return true; + } + + function index(){ + $env = $this->env(); + $data = $env->data(); + $select = array(); + $select["status"] = $this->morceau_status_id; + $select["id_user"] = $this->user["id"]; + $select["order_by"] = "ordre"; + $select["start"] = isset($_GET[$env->param("start")]) && $_GET[$env->param("start")] ? $_GET[$env->param("start")] : 0; + if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $select["id_groupe"] = $_GET[$env->param("groupe")]; + if(isset($_GET[$env->param("album")])) $select["id_composition"] = $_GET[$env->param("album")]; + if(($morceaux = $data->sources($select)) !== false) + { foreach($morceaux["list"] as $id_morceau => $morceau) + { $morceaux["list"][$id_morceau]["permissions"] = $data->source_permissions($morceau, $this->user["id"]); + } + if($_POST) + { $OK = true; + foreach($morceaux["list"] as $id_morceau => $morceau) + { if(isset($_POST["ordre_".$id_morceau])) + { if($data->set_source_info($morceau["id"], "ordre", $_POST["ordre_".$id_morceau]) === false) + { $OK = false; + break; + } + } + } + if($OK) + { $get_params = array(); + if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $get_params["groupe"] = $_GET[$env->param("groupe")]; + if(isset($_GET[$env->param("album")]) && $_GET[$env->param("album")]) $get_params["album"] = $_GET[$env->param("album")]; + $env->redirect + ( $env->url("users/morceaux", $get_params), + "l'ordre des morceaux a été enregistré" + ); + } + else $env->erreur("Impossible d'enregistrer l'ordre des morceaux"); + } + $env->set_out("groupes", $this->groupes); + $env->set_out("albums", $this->albums); + $env->set_out("morceaux", $morceaux); + } + else $env->erreur("Impossible de lire la liste des morceaux"); + } + + function add(){ + $env = $this->env(); + $data = $env->data(); + if($data->check_user_uploads_dir()) + { $web_path = $env->path("web"); + $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$env->path("content")."uploads/".$this->user["id"]; + $this->morceau = $data->empty_source(); + $users_sources_mod = $env->get_controller("users/sources"); + $source_infos = array + ( "date_inscription" => date("Y")."-".date("m")."-".date("d"), + "ordre" => 0 + ); + if($_POST) + { if(($groupe = $data->groupe($_POST["id_groupe"])) !== false) + { $groupe["id_groupe_status"] = $data->id_groupe_status_admin(); + $this->morceau["groupes"] = array($groupe["id"] => $groupe); + if($_POST["album"]) + { if($album = $data->source($_POST["album"], true)) + { $album["permissions"] = $data->source_permissions($album, $this->user["id"]); + if(!$album["permissions"]["contributeur"]) + { $env->erreur("vous n'avez pas la permission d'ajouter un morceau dans cet album"); + return; + } + } + else + { $env->erreur("impossible de lire les informations de l'album"); + return; + } + $this->morceau["album"] = $_POST["album"]; + } + if($_POST["is_derivation"]) + { foreach($_POST as $key => $value) + { if(substr($key, 0, 14) == "derivation_id_") + { $id_source_derivation = substr($key, 14); + $xml_url = trim($_POST["derivation_".$id_source_derivation]); + $this->morceau["derivations"][$id_source_derivation] = $users_sources_mod->get_source_from_xml + ( $env, + $xml_url, + ( $_POST["use_edit_derivation_content_".$id_source_derivation] ? + $_POST["edit_derivation_content_".$id_source_derivation] + : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "") + ), + $_POST["use_edit_derivation_content_".$id_source_derivation] ? true : false + ); + } + } + } + if($_POST["is_reference"]) + { $xml_url = trim($_POST["reference"]); + $this->morceau["reference"] = $users_sources_mod->get_source_from_xml + ( $env, + $xml_url, + ( $_POST["use_edit_reference_content"] ? + $_POST["edit_reference_content"] + : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "") + ), + $_POST["use_edit_reference_content"] ? true : false + ); + } + else + { if($this->morceau["titre"] = trim($_POST["titre"])) + { $this->morceau["licence"] = array + ( "id" => $_POST["licence"] + ); + $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"]; + $source_infos["description"] = $_POST["description"]; + foreach($_POST as $post_key => $post_value) + { if(substr($post_key, 0, 13) == "document_nom_") + { if($id_document = substr($post_key, 13)) + { $this->morceau["documents"][$id_document] = array + ( "nom" => $_POST["document_nom_".$id_document], + "url" => $_POST["document_url_".$id_document] + ); + } + } + } + } + else $env->message("merci de préciser un titre pour le morceau"); + } + if(!$env->out("messages") && !$env->out("erreur")) + { if + ( ( $id_source = $data->add_source + ( $this->morceau["groupes"], + $this->morceau["titre"], + $this->morceau_status_id, + $this->morceau["licence"]["id"], + $this->morceau["documents"], + $this->morceau["reference"], + $this->morceau["derivations"], + $source_infos + ) + ) !== false + ) + { if($_POST["album"]) + { if($data->set_source_composition($id_source, $_POST["album"])) + { $env->redirect + ( $env->url("users/morceaux"), + "le morceau a été ajouté" + ); + } + else $env->erreur("Le morceau a été ajouté mais impossible de l'associer à cet album"); + } + else $env->redirect + ( $env->url("users/morceaux"), + "le morceau a été ajouté" + ); + } + else $env->erreur("Impossible d'ajouter le morceau"); + } + } + else $env->erreur("Impossible de lire les informations du groupe"); + } + $env->set_out("morceau", $this->morceau); + } + else $env->erreur("Impossible de creer le repertoire utilisateur"); + } + + function edit(){ + $env = $this->env(); + $data = $env->data(); + $this->morceau["premissions"] = $data->source_permissions($this->morceau, $this->user["id"]); + if(!$this->morceau["premissions"]["editeur"]) + { $env->erreur("vous n'avez la permission d'editer ce morceau"); + return; + } + if($data->check_user_uploads_dir()) + { $web_path = $env->path("web"); + $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$env->path("content")."uploads/".$this->user["id"]; + if(($compositions = $data->source_compositions(array("id_source" => $this->morceau["id"]))) !== false) + { if($compositions) foreach($compositions[$this->morceau["id"]] as $id_album) { $this->morceau["album"] = $id_album; break; } + $env->set_out("groupe", $data->get_admin_groupe($this->morceau["groupes"])); + if($_POST) + { $source_infos = array + ( "date_inscription" => $_POST["date_inscription"], + "ordre" => isset($this->morceau["ordre"]) ? $this->morceau["ordre"] : 0 + ); + $this->morceau = $data->empty_source(array("id" => $this->morceau["id"])); + $users_sources_mod = $env->get_controller("users/sources"); + if(!($groupe = $data->groupe($_POST["id_groupe"]))) + { $env->erreur("Impossible de lire les informations du groupe"); + return; + } + $env->set_out("groupe", $groupe); + $groupe["id_groupe_status"] = $data->id_groupe_status_admin(); + $this->morceau["groupes"] = array($groupe["id"] => $groupe); + $this->morceau["derivations"] = array(); + if($_POST["album"]) + { if($album = $data->source($_POST["album"], true)) + { $album["permissions"] = $data->source_permissions($album, $this->user["id"]); + if(!$album["permissions"]["contributeur"]) + { $env->erreur("vous n'avez pas la permission d'ajouter un morceau dans cet album"); + return; + } + } + else + { $env->erreur("Impossible de lire les informations de l'album"); + return; + } + $this->morceau["album"] = $_POST["album"]; + } + if($_POST["is_derivation"]) + { foreach($_POST as $key => $value) + { if(substr($key, 0, 14) == "derivation_id_") + { $id_source_derivation = substr($key, 14); + $xml_url = trim($_POST["derivation_".$id_source_derivation]); + $this->morceau["derivations"][$id_source_derivation] = $users_sources_mod->get_source_from_xml + ( $env, + $xml_url, + ( $_POST["use_edit_derivation_content_".$id_source_derivation] ? + $_POST["edit_derivation_content_".$id_source_derivation] + : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "") + ), + $_POST["use_edit_derivation_content_".$id_source_derivation] ? true : false + ); + } + } + } + if($_POST["is_reference"]) + { $xml_url = trim($_POST["reference"]); + $this->morceau["reference"] = $users_sources_mod->get_source_from_xml + ( $env, + $xml_url, + ( $_POST["use_edit_reference_content"] ? + $_POST["edit_reference_content"] + : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "") + ), + $_POST["use_edit_reference_content"] ? true : false + ); + } + else + { if($this->morceau["titre"] = trim($_POST["titre"])) + { $this->morceau["licence"] = array + ( "id" => $_POST["licence"] + ); + $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"]; + $source_infos["description"] = $_POST["description"]; + foreach($_POST as $post_key => $post_value) + { if(substr($post_key, 0, 13) == "document_nom_") + { if($id_document = substr($post_key, 13)) + { $this->morceau["documents"][$id_document] = array + ( "nom" => $_POST["document_nom_".$id_document], + "url" => $_POST["document_url_".$id_document] + ); + } + } + } + } + else $env->message("merci de préciser un titre pour le morceau"); + } + if(!$env->out("messages") && !$env->out("erreur")) + { if + ( ( $data->set_source + ( $this->morceau["id"], + $this->morceau["groupes"], + $this->morceau["titre"], + $this->morceau_status_id, + $this->morceau["licence"]["id"], + $this->morceau["documents"], + $this->morceau["reference"], + $this->morceau["derivations"], + $source_infos + ) + ) !== false + ) + { if($data->del_source_compositions(array("id_source" => $this->morceau["id"]))) + { if($_POST["album"]) + { if($data->set_source_composition($this->morceau["id"], $_POST["album"])) + { $env->redirect + ( $env->url("users/morceaux/edit", array("id" => $this->morceau["id"])), + "le morceau a été modifié" + ); + } + else $env->erreur("Le morceau a été modifié mais impossible de l'associer à cet album"); + } + else $env->redirect + ( $env->url("users/morceaux/edit", array("id" => $this->morceau["id"])), + "le morceau a été modifié" + ); + } + else $env->erreur("Le morceau a été modifié mais impossible de l'associer à cet album"); + } + else $env->erreur("Impossible de modifier le morceau"); + } + } + } + else $env->erreur("Impossible de lire la liste des compositions"); + $env->set_out("morceau", $this->morceau); + } + else $env->erreur("Impossible de creer le repertoire utilisateur"); + } + + function maj_xml(){ + $data = $env->data(); + $this->morceau["premissions"] = $data->source_permissions($this->morceau, $this->user["id"]); + if(!$this->morceau["premissions"]["editeur"]) + { $env->erreur("vous n'avez la permission d'editer ce morceau"); + return; + } + if + ( isset($_GET[$env->param("id")]) + && isset($_GET[$env->param("xml")]) + && ($_GET[$env->param("xml")] == "derviation" ? isset($_GET[$env->param("derivation")]) : true) + ) + { $xml_url = ""; + if($_GET[$env->param("xml")] == "derivation") + { if(isset($this->morceau["derivations"][$_GET[$env->param("derivation")]]["xml"]["url"])) + $xml_url = $this->morceau["derivations"][$_GET[$env->param("derivation")]]["xml"]["url"]; + } + elseif($_GET[$env->param("xml")] == "reference") + { if(isset($this->morceau["reference"]["xml"]["url"])) + $xml_url = $this->morceau["reference"]["xml"]["url"]; + } + $erreur = ""; + if($xml_url) + { if(($res = $data->maj_source_cache($xml_url)) !== false) + { if($res === true) + { if($this->morceau = $data->source($this->morceau["id"])) + { $env->redirect + ( $env->url("users/morceaux/edit", array("id" => $this->morceau["id"])), + "Les informations du fichier XML ont été mises à jour", + 2 + ); + return; + } + else $erreur = + "le contenu du fichier XML a été mis à jour" + .", mais impossible de lire les informations du morceau"; + } + else + { switch($res) + { case -1: $env->message("Impossible de lire le contenu du fichier XML"); break; + case -2: $env->message("Le fichier XML indiqué ne contient pas un fichier de source valide"); break; + default: $erreur = "Erreur inconnue (?)"; break; + } + } + } + else $erreur = "Impossible de mettre à jour le contenu du fichier XML dans le cache"; + } + else $env->message("Pas d'URL pour ce fichier XML. Impossible de recharger les informations"); + if($erreur) $env->erreur($erreur); + else $env->run("users/morceaux/edit", array("id" => $this->morceau["id"])); + } + else $env->erreur("parametre de fichier xml manquant"); + } + + function del(){ + $env = $this->env(); + $data = $env->data(); + $this->morceau["premissions"] = $data->source_permissions($this->morceau, $this->user["id"]); + if($this->morceau["premissions"]["admin"]) + { if($data->del_source($this->morceau["id"])) + { $env->redirect + ( $env->url("users/morceaux"), + "le morceau a été supprimé" + ); + } + else $env->erreur("Impossible de supprimer le morceau"); + } + else $env->erreur("vous n'avez la permission d'effacer ce morceau"); + } + + } + +?> \ No newline at end of file diff --git a/app/controllers/users/pistes.php b/app/controllers/users/pistes.php new file mode 100644 index 0000000..8d3d1ea --- /dev/null +++ b/app/controllers/users/pistes.php @@ -0,0 +1,478 @@ +env(); + $data = $env->data(); + if(($this->status = $data->source_status()) !== false) + { foreach($this->status as $id_source_status => $source_status) + { if($source_status["nom"] == "album") $this->album_status_id = $id_source_status; + if($source_status["nom"] == "morceau") $this->morceau_status_id = $id_source_status; + if($source_status["nom"] == "piste") $this->piste_status_id = $id_source_status; + if(isset($this->album_status_id) && isset($this->morceau_status_id) && isset($this->piste_status_id)) break; + } + if(isset($this->album_status_id) && isset($this->morceau_status_id) && isset($this->piste_status_id)) + { if($this->user = $env->user()) + { if(($this->groupes = $data->groupes($this->user["id"])) !== false) + { $env->set_out("groupes", $this->groupes); + $this->albums = array(); + $this->morceaux = array(); + if($this->groupes["total"] > 0) + { foreach($this->groupes["list"] as $id_groupe => $groupe) + { $this->albums[$id_groupe] = array(); + $select = array + ( "status" => $this->album_status_id, + "id_user" => $this->user["id"], + "id_groupe" => $id_groupe + ); + if(($albums = $data->sources($select)) !== false) + { $this->albums[$id_groupe] = $albums["list"]; + } + else + { $this->albums = false; + break; + } + + $this->morceaux[$id_groupe] = array(); + $select = array + ( "status" => $this->morceau_status_id, + "id_user" => $this->user["id"], + "id_groupe" => $id_groupe + ); + if(($morceaux = $data->sources($select)) !== false) + { foreach($morceaux["list"] as $id_morceau => $morceau) + { if(($compositions = $data->source_compositions(array("id_source" => $id_morceau))) !== false) + { if($compositions) foreach($compositions[$id_morceau] as $_id_album) { $morceaux["list"][$id_morceau]["album"] = $_id_album; break; } + if(!isset($morceaux["list"][$id_morceau]["album"])) $morceaux["list"][$id_morceau]["album"] = 0; + } + else + { $this->morceaux = false; + break; + } + } + if($this->morceaux !== false) + { foreach($morceaux["list"] as $id_morceau => $morceau) + { if(!isset($this->morceaux[$id_groupe][$morceau["album"]])) $this->morceaux[$id_groupe][$morceau["album"]] = array(); + $this->morceaux[$id_groupe][$morceau["album"]][$id_morceau] = $morceau; + } + } + } + else + { $this->morceaux = false; + break; + } + if($this->morceaux === false) break; + } + } + if($this->albums !== false && $this->morceaux !== false) + { $env->set_out("albums", $this->albums); + $env->set_out("morceaux", $this->morceaux); + if($env->etat("action") == "edit" || $env->etat("action") == "del" || $env->etat("action") == "maj_xml") + { if(($this->piste = $data->source($_GET[$env->param("id")], true)) !== false && $this->piste) + { + } + else return "Impossible de lire les informations de la source"; + } + if($env->etat("action") == "add" || $env->etat("action") == "edit") + { if(($this->licences = $data->licences()) !== false) + { $env->set_out("licences", $this->licences); + } + else return "Impossible de lire la liste des licences"; + } + } + else return "Impossible de lire la liste des albums"; + } + else return "Impossible de lire la liste des groupes"; + } + else return "Vous devez être identifier pour accéder à cette page"; + } + else + { if(!isset($this->album_status_id)) return "Type de source inconnu: album"; + return "Type de source inconnu: morceau"; + } + } + else return "Impossible de lire la liste des status de source"; + return true; + } + + function index(){ + $env = $this->env(); + $data = $env->data(); + $select = array(); + $select["status"] = $this->piste_status_id; + $select["id_user"] = $this->user["id"]; + $select["order_by"] = "ordre"; + if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $select["id_groupe"] = $_GET[$env->param("groupe")]; + if(isset($_GET[$env->param("morceau")]) && $_GET[$env->param("morceau")]) $select["id_composition"] = $_GET[$env->param("morceau")]; + $select["start"] = isset($_GET[$env->param("start")]) && $_GET[$env->param("start")] ? $_GET[$env->param("start")] : 0; + if(($pistes = $data->sources($select)) !== false) + { foreach($pistes["list"] as $id_piste => $piste) + { $pistes["list"][$id_piste]["permissions"] = $data->source_permissions($piste, $this->user["id"]); + } + if($_POST) + { $OK = true; + foreach($pistes["list"] as $id_piste => $piste) + { if(isset($_POST["ordre_".$id_piste])) + { if($data->set_source_info($piste["id"], "ordre", $_POST["ordre_".$id_piste]) === false) + { $OK = false; + break; + } + } + } + if($OK) + { $get_params = array(); + if(isset($_GET[$env->param("groupe")]) && $_GET[$env->param("groupe")]) $get_params["groupe"] = $_GET[$env->param("groupe")]; + if(isset($_GET[$env->param("morceau")]) && $_GET[$env->param("morceau")]) $get_params["morceau"] = $_GET[$env->param("morceau")]; + $env->redirect + ( $env->url("users/pistes", $get_params), + "l'ordre des sources a été enregistré" + ); + } + else $env->erreur("Impossible d'enregistrer l'ordre des sources"); + } + $env->set_out("pistes", $pistes); + } + else $env->erreur("Impossible de lire la liste des sources"); + } + + function add(){ + $env = $this->env(); + $data = $env->data(); + if($data->check_user_uploads_dir()) + { $web_path = $env->path("web"); + $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$env->path("content")."uploads/".$this->user["id"]; + $this->piste = $data->empty_source(); + $users_sources_mod = $env->get_controller("users/sources"); + $source_infos = array + ( "date_inscription" => date("Y")."-".date("m")."-".date("d"), + "ordre" => 0 + ); + if($_POST) + { if(($groupe = $data->groupe($_POST["id_groupe"])) !== false) + { $groupe["id_groupe_status"] = $data->id_groupe_status_admin(); + $this->piste["groupes"] = array($groupe["id"] => $groupe); + $env->set_out("groupe", $groupe); + } + else + { $env->erreur("Impossible de lire les informations du groupe"); + return; + } + if($_POST["morceau"]) + { if($morceau = $data->source($_POST["morceau"], true)) + { $morceau["permissions"] = $data->source_permissions($morceau, $this->user["id"]); + if(!$morceau["permissions"]["contributeur"]) + { $env->erreur("vous n'avez pas la permission d'ajouter une source dans ce morceau"); + return; + } + } + else + { $env->erreur("impossible de lire les informations du morceau"); + return; + } + $this->piste["morceau"] = $_POST["morceau"]; + } + if(isset($_POST["is_derivation"])) + { foreach($_POST as $key => $value) + { if(substr($key, 0, 14) == "derivation_id_") + { $id_source_derivation = substr($key, 14); + $xml_url = trim($_POST["derivation_".$id_source_derivation]); + $this->piste["derivations"][$id_source_derivation] = $users_sources_mod->get_source_from_xml + ( $env, + $xml_url, + ( $_POST["use_edit_derivation_content_".$id_source_derivation] ? + $_POST["edit_derivation_content_".$id_source_derivation] + : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "") + ), + $_POST["use_edit_derivation_content_".$id_source_derivation] ? true : false + ); + } + } + } + if(isset($_POST["is_reference"])) + { $xml_url = trim($_POST["reference"]); + $this->piste["reference"] = $users_sources_mod->get_source_from_xml + ( $env, + $xml_url, + ( $_POST["use_edit_reference_content"] ? + $_POST["edit_reference_content"] + : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "") + ), + $_POST["use_edit_reference_content"] ? true : false + ); + } + else + { if($this->piste["titre"] = trim($_POST["titre"])) + { $this->piste["licence"] = array + ( "id" => $_POST["licence"] + ); + $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"]; + $source_infos["description"] = $_POST["description"]; + foreach($_POST as $post_key => $post_value) + { if(substr($post_key, 0, 13) == "document_nom_") + { if($id_document = substr($post_key, 13)) + { $this->piste["documents"][$id_document] = array + ( "nom" => $_POST["document_nom_".$id_document], + "url" => $_POST["document_url_".$id_document] + ); + } + } + } + } + else $env->message("merci de préciser un titre pour la source"); + } + if(!$env->out("messages") && !$env->out("erreur")) + { if + ( ( $id_source = $data->add_source + ( $this->piste["groupes"], + $this->piste["titre"], + $this->piste_status_id, + $this->piste["licence"]["id"], + $this->piste["documents"], + $this->piste["reference"], + $this->piste["derivations"], + $source_infos + ) + ) !== false + ) + { if($_POST["morceau"]) + { if($data->set_source_composition($id_source, $_POST["morceau"])) + { $env->redirect + ( $env->url("users/pistes"), + "la source a été ajoutée" + ); + } + else $env->erreur("La source a été ajoutée mais impossible de l'associer à ce morceau"); + } + else $env->redirect + ( $env->url("users/pistes"), + "la source a été ajoutée" + ); + } + else $env->erreur("Impossible d'ajouter la source"); + } + } + $env->set_out("piste", $this->piste); + } + else $env->erreur("Impossible de creer le repertoire utilisateur"); + } + + function edit(){ + $env = $this->env(); + $data = $env->data(); + $this->piste["premissions"] = $data->source_permissions($this->piste, $this->user["id"]); + if(!$this->piste["premissions"]["editeur"]) + { $env->erreur("vous n'avez la permission d'editer cette source"); + return; + } + if($data->check_user_uploads_dir()) + { $web_path = $env->path("web"); + $_SESSION["upload_dir"] = $web_path.($web_path ? "" : "/").$env->path("content")."uploads/".$this->user["id"]; + if(($compositions = $data->source_compositions(array("id_source" => $this->piste["id"]))) !== false) + { if($compositions) foreach($compositions[$this->piste["id"]] as $id_morceau) { $this->piste["morceau"] = $id_morceau; break; } + $env->set_out("groupe", $data->get_admin_groupe($this->piste["groupes"])); + if($_POST) + { $source_infos = array + ( "date_inscription" => $_POST["date_inscription"], + "ordre" => isset($this->piste["ordre"]) ? $this->piste["ordre"] : 0 + ); + $this->piste = $data->empty_source(array("id" => $this->piste["id"])); + $users_sources_mod = $env->get_controller("users/sources"); + if(!($groupe = $data->groupe($_POST["id_groupe"]))) + { $env->erreur("Impossible de lire les informations du groupe"); + return; + } + $env->set_out("groupe", $groupe); + $groupe["id_groupe_status"] = $data->id_groupe_status_admin(); + $this->piste["groupes"] = array($groupe["id"] => $groupe); + $this->piste["derivations"] = array(); + if($_POST["morceau"]) + { if($morceau = $data->source($_POST["morceau"], true)) + { $morceau["permissions"] = $data->source_permissions($morceau, $this->user["id"]); + if(!$morceau["permissions"]["contributeur"]) + { $env->erreur("vous n'avez pas la permission d'ajouter une source dans ce morceau"); + return; + } + } + else + { $env->erreur("impossible de lire les informations du morceau"); + return; + } + $this->piste["morceau"] = $_POST["morceau"]; + } + if(isset($_POST["is_derivation"])) + { foreach($_POST as $key => $value) + { if(substr($key, 0, 14) == "derivation_id_") + { $id_source_derivation = substr($key, 14); + $xml_url = trim($_POST["derivation_".$id_source_derivation]); + $this->piste["derivations"][$id_source_derivation] = $users_sources_mod->get_source_from_xml + ( $env, + $xml_url, + ( $_POST["use_edit_derivation_content_".$id_source_derivation] ? + $_POST["edit_derivation_content_".$id_source_derivation] + : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "") + ), + $_POST["use_edit_derivation_content_".$id_source_derivation] ? true : false + ); + } + } + } + if(isset($_POST["is_reference"])) + { $xml_url = trim($_POST["reference"]); + $this->piste["reference"] = $users_sources_mod->get_source_from_xml + ( $env, + $xml_url, + ( $_POST["use_edit_reference_content"] ? + $_POST["edit_reference_content"] + : ($xml_url ? $data->get_source_xml_from_url($xml_url) : "") + ), + $_POST["use_edit_reference_content"] ? true : false + ); + } + else + { if($this->piste["titre"] = trim($_POST["titre"])) + { $this->piste["licence"] = array + ( "id" => $_POST["licence"] + ); + $source_infos["date_creation"] = $_POST["annee_date_creation"]."-".$_POST["mois_date_creation"]."-".$_POST["jour_date_creation"]; + $source_infos["description"] = $_POST["description"]; + foreach($_POST as $post_key => $post_value) + { if(substr($post_key, 0, 13) == "document_nom_") + { if($id_document = substr($post_key, 13)) + { $this->piste["documents"][$id_document] = array + ( "nom" => $_POST["document_nom_".$id_document], + "url" => $_POST["document_url_".$id_document] + ); + } + } + } + } + else $env->message("merci de préciser un titre pour la source"); + } + if(!$env->out("messages") && !$env->out("erreur")) + { if + ( ( $data->set_source + ( $this->piste["id"], + $this->piste["groupes"], + $this->piste["titre"], + $this->piste_status_id, + $this->piste["licence"]["id"], + $this->piste["documents"], + $this->piste["reference"], + $this->piste["derivations"], + $source_infos + ) + ) !== false + ) + { if($data->del_source_compositions(array("id_source" => $this->piste["id"]))) + { if($_POST["morceau"]) + { if($data->set_source_composition($this->piste["id"], $_POST["morceau"])) + { $env->redirect + ( $env->url("users/pistes/edit", array("id" => $this->piste["id"])), + "la source a été modifiée" + ); + } + else $env->erreur("La source a été modifiée mais impossible de l'associer à ce morceau"); + } + else $env->redirect + ( $env->url("users/pistes/edit", array("id" => $this->piste["id"])), + "la source a été modifiée" + ); + } + else $env->erreur("La source a été modifiée mais impossible de l'associer à ce morceau"); + } + else $env->erreur("Impossible de modifier la source"); + } + } + } + else $env->erreur("Impossible de lire la liste des compositions"); + $env->set_out("piste", $this->piste); + } + else $env->erreur("Impossible de creer le repertoire utilisateur"); + } + + function maj_xml(){ + $env = $this->env(); + $data = $env->data(); + $this->piste["premissions"] = $data->source_permissions($this->piste, $this->user["id"]); + if(!$this->piste["premissions"]["editeur"]) + { $env->erreur("vous n'avez la permission d'editer cette source"); + return; + } + if + ( isset($_GET[$env->param("id")]) + && isset($_GET[$env->param("xml")]) + && ($_GET[$env->param("xml")] == "derviation" ? isset($_GET[$env->param("derivation")]) : true) + ) + { $xml_url = ""; + if($_GET[$env->param("xml")] == "derivation") + { if(isset($this->piste["derivations"][$_GET[$env->param("derivation")]]["xml"]["url"])) + $xml_url = $this->piste["derivations"][$_GET[$env->param("derivation")]]["xml"]["url"]; + } + elseif($_GET[$env->param("xml")] == "reference") + { if(isset($this->piste["reference"]["xml"]["url"])) + $xml_url = $this->piste["reference"]["xml"]["url"]; + } + $erreur = ""; + if($xml_url) + { if(($res = $data->maj_source_cache($xml_url)) !== false) + { if($res === true) + { if($this->piste = $data->source($this->piste["id"])) + { $env->redirect + ( $env->url("users/pistes/edit", array("id" => $this->piste["id"])), + "Les informations du fichier XML ont été mises à jour", + 2 + ); + return; + } + else $erreur = + "le contenu du fichier XML a été mis à jour" + .", mais impossible de lire les informations de la source"; + } + else + { switch($res) + { case -1: $env->message("Impossible de lire le contenu du fichier XML"); break; + case -2: $env->message("Le fichier XML indiqué ne contient pas un fichier de source valide"); break; + default: $erreur = "Erreur inconnue (?)"; break; + } + } + } + else $erreur = "Impossible de mettre à jour le contenu du fichier XML dans le cache"; + } + else $env->message("Pas d'URL pour ce fichier XML. Impossible de recharger les informations"); + if($erreur) $env->erreur($erreur); + else $env->run("users/pistes/edit", array("id" => $this->piste["id"])); + } + else $env->erreur("parametre de fichier xml manquant"); + } + + function del(){ + $env = $this->env(); + $data = $env->data(); + $this->piste["premissions"] = $data->source_permissions($this->piste, $this->user["id"]); + if($this->piste["premissions"]["admin"]) + { if($data->del_source($this->piste["id"])) + { $env->redirect + ( $env->url("users/pistes"), + "la source a été supprimée" + ); + } + else $env->erreur("Impossible de supprimer la source"); + } + else $env->erreur("vous n'avez la permission d'effacer cette source"); + } + + } + +?> \ No newline at end of file diff --git a/app/controllers/users/sources.php b/app/controllers/users/sources.php new file mode 100644 index 0000000..f962924 --- /dev/null +++ b/app/controllers/users/sources.php @@ -0,0 +1,58 @@ +data(); + $source = $data->empty_source(); + $source_xml = array + ( "url" => $xml_url, + "content" => $xml_content, + "use_edit_content" => $xml_use_edit_content + ); + if($source_xml["url"]) + { if($source_xml["content"]) + { if + ( ( $source = $data->source_xml_read + ( $source_xml["url"], + $source_xml["content"] + ) + ) === false + ) + { $source = $data->empty_source(); + $env->message + ( "Code XML invalide pour :" + ."
".$source_xml["url"]."" + ); + } + } + else + { if($source_xml["content"] === false) + { $env->message + ( "Impossible de lire le contenu du fichier XML pour :" + ."
".$source_xml["url"]."" + ); + } + else + { $env->message + ( "Le contenu du fichier XML est vide pour :" + ."
".$source_xml["url"]."" + ); + } + } + } + else + { $env->message("Merci de préciser l'ULR du fichier XML"); + } + $source["xml"] = $source_xml; + return $source; + } + + } + +?> \ No newline at end of file diff --git a/app/data/modules/share/sml_data_sources_cache.php b/app/data/modules/share/sml_data_sources_cache.php new file mode 100644 index 0000000..e09f824 --- /dev/null +++ b/app/data/modules/share/sml_data_sources_cache.php @@ -0,0 +1,238 @@ +env(); + $sgbd = $this->sgbd(); + if(($cache_infos = $this->source_cache_infos_db($url)) !== false) + { if($cache_infos) + { if($env->config("cache_maj_auto")) + { if(($need_update = $this->cache_need_update($cache_infos["last_update"], $env->config("cache_time") * 60 * 60)) !== false) + { if(!$IGNORE_UPDATE && $need_update) + { if($this->buffer = @file_get_contents($url)) + { if($this->parse_source_xml($this->buffer)) + { if($this->del_source_cache($cache_infos["id"], $cache_infos["id_source"])) + { if($this->add_source_cache($url, $this->buffer)) return $this->buffer; + } + } + else return -1; + } + else return -1; + } + else return @file_get_contents($env->path("content")."cache/sources/".$cache_infos["id_source"].".xml"); + } + } + } + else + { if($this->buffer = @file_get_contents($url)) + { if($this->parse_source_xml($this->buffer)) + { if(!$this->add_source_cache($url, $this->buffer)) return false; + } + return $this->buffer; + } + } + } + return false; + } + + /* + * retourne 1 si $last_update + $cache_time est + * superieur ou egal a la date courante, 0 sinon + * + * retourne FAUX si le formta de $last_update ou + * de $cache_time est incorrect + * + * $last_update : date au format Y-m-d H:i:s + * + * $cache_time : duree, en secondes + * + */ + function cache_need_update($last_update, $cache_time) + { $v_last_update = explode(" ", $last_update); + if(count($v_last_update) == 2) + { $v_date = explode("-", $v_last_update[0]); + if(count($v_date) == 3) + { $v_time = explode(":", $v_last_update[1]); + if(count($v_time) == 3) + { if + ( preg_match("/^[0-9]+$/", $v_date[0]) + && preg_match("/^[0-9]+$/", $v_date[1]) + && preg_match("/^[0-9]+$/", $v_date[2]) + && preg_match("/^[0-9]+$/", $v_time[0]) + && preg_match("/^[0-9]+$/", $v_time[1]) + && preg_match("/^[0-9]+$/", $v_time[2]) + && preg_match("/^[0-9]+$/", $cache_time) + ) + { return (time() - mktime($v_time[0], $v_time[1], $v_time[2], $v_date[1], $v_date[2], $v_date[0])) < $cache_time ? 0 : 1; + } + } + } + } + return false; + } + + /* + * ajoute un contenu xml dans le cache + * + * $url : l'URL du fichier XML d'origine + * + * $xml_content : le contenu du fichier XML + * + */ + function add_source_cache($url, $xml_content) + { $env = $this->env(); + $sgbd = $this->sgbd(); + if(($cache_index = $this->inc_sources_cache_index()) !== false) + { if($fh = @fopen($env->path("content")."cache/sources/".$cache_index.".xml", "w+")) + { $res = false; + if(@fwrite($fh, $this->buffer)) + { @fclose($fh); + $res = $this->add_source_cache_db($url, $cache_index); + } + @fclose($fh); + return $res; + } + } + return false; + } + + /* + * met a jour le cache pour le fichier XML dont l'URL d'origine est $url + * + * retourne : + * + * VRAI si tout se passe bien + * -1 si l'URL est introuvable + * -2 si le contenu a cette URL n'est pas un fichier XML de source + * FAUX si le cache n'a pas pu etre mis a jour avec les nouvelles infos + * + */ + function maj_source_cache($url) + { if($this->buffer = @file_get_contents($url)) + { if($this->parse_source_xml($this->buffer)) + { if(($cache_infos = $this->source_cache_infos_db($url)) !== false) + { if($cache_infos) + { if($this->del_source_cache($cache_infos["id"], $cache_infos["id_source"])) + { if($this->add_source_cache($url, $this->buffer)) return true; + } + } + else + { if($this->add_source_cache($url, $this->buffer)) return true; + } + } + return false; + } + else return -2; + } + else return -1; + } + + /* + * vide le cache + * + */ + function empty_source_cache() + { $OK = true; + if(($cache = $this->source_cache_db()) !== false) + { foreach($cache as $id_cache => $cache_infos) + { if(!$this->del_source_cache($id_cache, $cache_infos["id_source"])) + { $OK = false; + $break; + } + } + } + else $OK = false; + return $OK; + } + + /* + * efface un contenu XML du cache + * + * $id_cache_data : l'index des informations de cache + * dans le dossier data + * + * $id_xml_cache : l'index du contenu XML dans le cache + * + */ + function del_source_cache($id_cache_data, $id_xml_cache) + { $env = $this->env(); + if($this->del_source_cache_db($id_cache_data)) + { if(@unlink($env->path("content")."cache/sources/".$id_xml_cache.".xml")) return true; + } + return false; + } + + /* + * initialise le cache + * cette fonction verifie que les dossiers du cache existent + * et les cree sinon + * + */ + function init_sources_cache() + { $env = $this->env(); + if(!is_dir($env->path("content")."cache")) @mkdir($env->path("content")."cache"); + if(is_dir($env->path("content")."cache")) + { if(!is_dir($env->path("content")."cache/sources")) @mkdir($env->path("content")."cache/sources"); + if(is_dir($env->path("content")."cache/sources")) + { return true; + } + } + return "impossible d'initialiser le cache"; + } + + /* + * incremente l'index du cache et retourne le nouvel index + * + */ + function inc_sources_cache_index() + { clearstatcache(); + $env = $this->env(); + $cache_index = false; + if(is_dir($env->path("content")."cache/sources") && is_writable($env->path("content")."cache/sources")) + { if(!file_exists($env->path("content")."cache/sources/.index")) + { if($fh = @fopen($env->path("content")."cache/sources/.index", "w+")) + { if(@fwrite($fh, "0")) $cache_index = 0; + @fclose($fh); + } + } + else + { if(($cache_index = @file_get_contents($env->path("content")."cache/sources/.index")) !== false) + { if(preg_match("/^[0-9]+$/", $cache_index)) + { $cache_index = (int)$cache_index; + } + else $cache_index = false; + } + } + } + if($cache_index !== false) + { $cache_index++; + if($fh = @fopen($env->path("content")."cache/sources/.index", "w+")) + { if(!@fwrite($fh, (string)$cache_index)) $cache_index = false; + @fclose($fh); + } + else $cache_index = false; + } + return $cache_index; + } + + } + +?> \ No newline at end of file diff --git a/app/data/modules/share/sml_data_sources_xml.php b/app/data/modules/share/sml_data_sources_xml.php new file mode 100644 index 0000000..1cf0cc4 --- /dev/null +++ b/app/data/modules/share/sml_data_sources_xml.php @@ -0,0 +1,207 @@ +env(); + if($env->config("cache_actif")) return $this->get_source_xml_from_cache($url, $IGNORE_UPDATE); + else return @file_get_contents($url); + } + + # ---------------------------------------------------------------------------------------- + # XML source + # + + function set_source_xml($id, $params = array()) + { $env = $this->env(); + $OK = false; + if(strlen($id) > 0 && ($fh = @fopen($this->source_xml_path($id), "wb")) !== false){ + if(($content = $this->source_xml_content($id, $params)) !== false){ + if(@fwrite($fh, $content)) $OK = true; + } + @fclose($fh); + } + return $OK; + } + + function maj_source_xml_groupe($groupe) + { $OK = true; + if($groupe !== false) + { $sgbd = $this->sgbd(); + $env = $this->env(); + if(($sources = $this->sources(array("id_groupe" => $groupe["id"]))) !== false) + { foreach($sources["list"] as $id_source => $source) + { if(!$this->set_source_xml($source["id"], array("source" => $source))) + { $OK = false; + break; + } + } + } + else $OK = false; + } + else $OK = false; + return $OK; + } + + function maj_source_xml_licence($licence) + { $OK = true; + if($licence !== false) + { $sgbd = $this->sgbd(); + $env = $this->env(); + if(($sources = $this->sources(array("id_licence" => $licence["id"]))) !== false) + { foreach($sources["list"] as $id_source => $source) + { if(!$this->set_source_xml($source["id"], array("source" => $source))) + { $OK = false; + break; + } + } + } + else $OK = false; + } + else $OK = false; + return $OK; + } + + function maj_source_xml_all() + { $OK = true; + $sgbd = $this->sgbd(); + $env = $this->env(); + if(($sources = $this->sources(array())) !== false) + { foreach($sources["list"] as $id_source => $source) + { if(!$this->set_source_xml($source["id"], array("source" => $source))) + { $OK = false; + break; + } + } + } + else $OK = false; + return $OK; + } + + function get_source_xml($id_source) + { $source_file = $this->source_xml_path($id_source); + if(file_exists($source_file)) + { return @file_get_contents($source_file); + } + return ""; + } + + function del_source_xml($id_source) + { $env = $this->env(); + if(file_exists($this->source_xml_path($id_source))) + { return + $this->del_edit_derivations(array("id_source" => $id_source)) + && $this->del_edit_reference_content($id_source) + && @unlink($this->source_xml_path($id_source)); + } + return true; + } + + # ---------------------------------------------------------------------------------------- + # edition XML derivation + # + + function set_edit_derivation_content($id_source, $id_source_derivation, $content) + { $env = $this->env(); + $derivations_dir = $this->derivations_edit_xml_dir_path(); + if(!file_exists($derivations_dir) || !is_dir($derivations_dir)) @mkdir($derivations_dir); + if(file_exists($derivations_dir) && is_dir($derivations_dir)) + { $derivations_dir = $this->derivations_edit_xml_dir_path($id_source); + if(!file_exists($derivations_dir) || !is_dir($derivations_dir)) @mkdir($derivations_dir); + if(file_exists($derivations_dir) && is_dir($derivations_dir)) + { if($fh = @fopen($this->derivation_edit_xml_path($id_source, $id_source_derivation), "w+")) + { if(@fwrite($fh, $content)) + { @fclose($fh); + return true; + } + @fclose($fh); + } + } + } + return false; + } + + function get_edit_derivation_content($id_source, $id_source_derivation) + { $env = $this->env(); + $derivation_file = $this->derivation_edit_xml_path($id_source, $id_source_derivation); + $derivation_content = ""; + if(file_exists($derivation_file)) + { $derivation_content = @file_get_contents($derivation_file); + } + return $derivation_content; + } + + function del_edit_derivation_content($id_source, $id_source_derivation) + { $env = $this->env(); + $derivation_file = $this->derivation_edit_xml_path($id_source, $id_source_derivation); + $OK = true; + if(file_exists($derivation_file)) + { $OK = @unlink($derivation_file); + } + return $OK; + } + + function del_edit_derivations($id_source) + { $env = $this->env(); + $derivations_dir = $this->derivations_edit_xml_dir_path($id_source); + $OK = true; + if(is_dir($derivations_dir)) + { if($dh = opendir($derivations_dir)) + { while($OK && (($file = readdir($dh)) !== false)) + { if(preg_match("/^.+\.xml$/", $file)) + { $OK = @unlink($derivations_dir.$file) && $OK; + } + } + closedir($dh); +// $OK = @rmdir($derivations_dir) && $OK; + @rmdir($derivations_dir); + } + else $OK = false; + } + return $OK; + } + + # ---------------------------------------------------------------------------------------- + # edition XML reference + # + + function set_edit_reference_content($id_source, $content) + { $env = $this->env(); + $references_dir = $this->reference_edit_xml_dir_path(); + if(!file_exists($references_dir) || !is_dir($references_dir)) @mkdir($references_dir); + if(file_exists($references_dir) && is_dir($references_dir)) + { if($fh = @fopen($this->reference_edit_xml_path($id_source), "w+")) + { if(@fwrite($fh, $content)) + { @fclose($fh); + return true; + } + @fclose($fh); + } + } + return false; + } + + function get_edit_reference_content($id_source) + { $env = $this->env(); + $reference_file = $this->reference_edit_xml_path($id_source); + $reference_content = ""; + if(file_exists($reference_file)) + { $reference_content = @file_get_contents($reference_file); + } + return $reference_content; + } + + function del_edit_reference_content($id_source) + { $env = $this->env(); + $reference_file = $this->reference_edit_xml_path($id_source); + $OK = true; + if(file_exists($reference_file)) + { $OK = @unlink($reference_file); + } + return $OK; + } + + } + +?> \ No newline at end of file diff --git a/app/data/modules/share/sml_data_sources_xml_format.php b/app/data/modules/share/sml_data_sources_xml_format.php new file mode 100644 index 0000000..0847036 --- /dev/null +++ b/app/data/modules/share/sml_data_sources_xml_format.php @@ -0,0 +1,178 @@ +env(); + $content = false; + $this->status = isset($this->status) ? $this->status : $this->source_status(); + if($this->status !== false) + { $this->source = isset($params["source"]) ? $params["source"] : $this->source($id, true); + if($this->source !== false) + { if($this->source["groupes"]) $this->groupes = $this->source["groupes"]; + if(isset($params["groupes"])) $this->groupes = $params["groupes"]; + if(!isset($this->groupes)) $this->groupes = $this->source_groupes($id); + if($this->groupes !== false) + { $this->licence = isset($params["licence"]) ? $params["licence"] : $this->licence($this->source["licence"]["id"]); + if($this->licence !== false) + { if(($this->sources = $this->source_compositions(array("id_composition" => $id))) !== false) + { $content = "\n"; + if($this->source["derivations"]) + { foreach($this->source["derivations"] as $id_derivation => $derivation) + { $content .= " \n"; + } + } + if($this->source["reference"]) $content .= " source["reference"]["xml"]["url"]."]]>\n"; + else + { $content .= + " source["titre"]."]]>\n" + ." url("sources/".$this->status[$this->source["status"]]["nom"]."/view", array($this->status[$this->source["status"]]["nom"] => $id))."]]>\n"; + $HAS_AUTHOR = false; + foreach($this->groupes as $id_groupe => $groupe) + { if($groupe["nom"] && $groupe["id_groupe_status"]) + { if + ( $groupe["id_groupe_status"] == $this->id_groupe_status_admin() + || $groupe["id_groupe_status"] == $this->id_groupe_status_editeur() + ) + { $content .= " \n"; + $HAS_AUTHOR = true; + } + } + else return false; + } + if(!$HAS_AUTHOR) return false; + foreach($this->source["documents"] as $id_document => $document) + { $content .= + " \n" + ." \n" + ." \n" + ." \n"; + } + if($this->licence) + { $content .= + " licence["url"]."\">licence["nom"]."]]>\n"; + } + if(isset($this->sources[$id])) + { foreach($this->sources[$id] as $id_source) + { $content .= " source_xml_url($id_source)."\" />\n"; + } + } + } + $content .= ""; + } + } + } + } + } + return $content; + } + + # ---------------------------------------------------------------------------------------- + # XML vers data + # + + function parse_source_xml($xml_content) + { if(!isset($this->sxml)) $this->sxml = new sxml(); + $this->sxml->parse($xml_content); + return isset($this->sxml->data["source"][0]); + } + + function empty_source($params = array()) + { $source = array + ( "auteurs" => array(), + "titre" => "", + "from" => "", + "licence" => array + ( "nom" => "", + "url" => "" + ), + "documents" => array(), + "derivations" => array(), + "reference" => array(), + "xml" => array + ( "url" => "", + "content" => "", + "use_edit_content" => false + ) + ); + foreach($params as $key => $value) $source[$key] = $value; + return $source; + } + + function source_xml_read($url, $xml_content = null) + { $source = $this->empty_source(); + if($this->xml_content = (isset($xml_content) ? $xml_content : $this->get_source_xml_from_url($url))) + { if($this->xml_content === -1) $this->xml_content = $this->get_source_xml_from_url($url, true); + $source["xml"] = array + ( "url" => $url, + "content" => $this->xml_content, + "use_edit_content" => false + ); + if($this->parse_source_xml($this->xml_content)) + { $this->buffer = $this->sxml->data["source"][0]; + foreach($this->buffer["subs"] as $key => $value) + { if($key == "auteur") + { $source["auteurs"][] = array + ( "nom" => $value[0]["data"] + ); + } + elseif($key == "document") + { foreach($value as $id_document => $document) + { $source["documents"][$id_document] = array + ( "nom" => $document["subs"]["nom"][0]["data"], + "url" => $document["subs"]["url"][0]["data"] + ); + } + } + elseif($key == "derivation") + { $source["derivations"][] = array + ( "xml" => array + ( "url" => $value[0]["data"], + "content" => "", + "use_edit_content" => false + ) + ); + } + elseif($key == "reference") + { $source["reference"] = array + ( "xml" => array + ( "url" => $value[0]["data"], + "content" => "", + "use_edit_content" => false + ) + ); + } + elseif($key == "licence") + { $source["licence"] = array + ( "nom" => $value[0]["data"], + "url" => $value[0]["attrs"]["url"] + ); + } + else + { $source[$key] = $value[0]["data"]; + } + } + $source["auteur"] = ""; + foreach($source["auteurs"] as $auteur) $source["auteur"] .= ($source["auteur"] ? ", " : "").$auteur["nom"]; + } + else return false; + } + else return false; + return $source; + } + + } + +?> \ No newline at end of file diff --git a/app/data/modules/share/sml_data_sources_xml_pathes.php b/app/data/modules/share/sml_data_sources_xml_pathes.php new file mode 100644 index 0000000..f49d891 --- /dev/null +++ b/app/data/modules/share/sml_data_sources_xml_pathes.php @@ -0,0 +1,66 @@ +env(); + $sources_dir = $env->path("content")."sources/"; + if(!is_dir($sources_dir)){ + if(file_exists($sources_dir)) return false; + @mkdir($sources_dir); + } + if(!is_dir($sources_dir)) return false; + $references_dir = $env->path("content")."sources/references/"; + if(!is_dir($references_dir)){ + if(file_exists($references_dir)) return false; + @mkdir($references_dir); + } + if(!is_dir($references_dir)) return false; + $derivations_dir = $env->path("content")."sources/derivations/"; + if(!is_dir($derivations_dir)){ + if(file_exists($derivations_dir)) return false; + @mkdir($derivations_dir); + } + if(!is_dir($derivations_dir)) return false; + return true; + } + + function source_xml_path($id_source){ + if(!$this->init_source_xml_pathes()) return false; + $env = $this->env(); + return $env->path("content")."sources/".$id_source.".xml"; + } + + function reference_edit_xml_dir_path(){ + if(!$this->init_source_xml_pathes()) return false; + $env = $this->env(); + return $env->path("content")."sources/references/"; + } + + function reference_edit_xml_path($id_source){ + if(!$this->init_source_xml_pathes()) return false; + $env = $this->env(); + return $this->reference_edit_xml_dir_path().$id_source.".xml"; + } + + function derivations_edit_xml_dir_path($id_source = null){ + if(!$this->init_source_xml_pathes()) return false; + $env = $this->env(); + return $env->path("content")."sources/derivations/".(isset($id_source) ? $id_source."/" : ""); + } + + function derivation_edit_xml_path($id_source, $id_source_derivation){ + if(!$this->init_source_xml_pathes()) return false; + $env = $this->env(); + return $this->derivations_edit_xml_dir_path($id_source).$id_source_derivation.".xml"; + } + + function source_xml_url($id_source){ + if(!$this->init_source_xml_pathes()) return false; + $env = $this->env(); + return "http://".$_SERVER["SERVER_NAME"].$env->path("web").$this->source_xml_path($id_source); + } + + } + +?> \ No newline at end of file diff --git a/app/data/modules/sql/sml_data_authors.php b/app/data/modules/sql/sml_data_authors.php new file mode 100644 index 0000000..72779a8 --- /dev/null +++ b/app/data/modules/sql/sml_data_authors.php @@ -0,0 +1,147 @@ +sgbd(); + $env = $this->env(); + $groupes = array("list" => array(), "total" => 0); + try{ + $SELECT = "SELECT *"; + $FROM = " FROM #--sml_authors"; + $WHERE = ""; + $WHERE .= (isset($id_user) ? ($WHERE ? " AND" : " WHERE")." id_user=".$id_user : ""); + $WHERE .= (isset($alpha) ? ($WHERE ? " AND" : " WHERE")." LEFT(login, 1)=".$this->eq($alpha) : ""); + $LIMIT = (isset($start) && $env->config("max_list") ? " LIMIT ".$env->config("max_list")." OFFSET ".$start : ""); + $sql = "SELECT count(*) as n FROM(".$SELECT.$FROM.$WHERE.") res"; + $rst = $sgbd->query($sql); + if($v_rst = $sgbd->fetch_assoc($rst)) $groupes["total"] = $v_rst["n"]; + $sgbd->free_result($rst); + if($groupes["total"] > 0){ + $sql = "SELECT * FROM(".$SELECT.$FROM.$WHERE.$LIMIT.") res"; + $rst = $sgbd->query($sql); + while($v_rst = $sgbd->fetch_assoc($rst)){ + $groupes["list"][$v_rst["id"]] = $v_rst; + $groupes["list"][$v_rst["id"]]["image_uri"] = ( + $v_rst["image"] ? + $env->path("content")."uploads/".$v_rst["image"] + : "" + ); + } + $sgbd->free_result($rst); + } + } + catch(Exception $e){ + return false; + } + return $groupes; + } + + function groupe($id){ + $sgbd = $this->sgbd(); + $env = $this->env(); + $groupe = array(); + try{ + $sql = "SELECT * from #--sml_authors WHERE id=".$this->eq($id); + $rst = $sgbd->query($sql); + if($v_rst = $sgbd->fetch_assoc($rst)){ + $groupe = $v_rst; + $groupe["image_uri"] = ( + $groupe["image"] ? + $env->path("content")."uploads/".$groupe["image"] + : "" + ); + } + $sgbd->free_result($rst); + } + catch(Exception $e) { return false; } + return $groupe; + } + + function groupe_exists($nom, $other_than_id = null){ + $sgbd = $this->sgbd(); + $EXISTS = 0; + try{ + $sql = "SELECT count(*) as n from #--sml_authors WHERE nom=".$this->eq($nom); + if(isset($other_than_id)) $sql .= " AND id!=".$this->eq($other_than_id); + $rst = $sgbd->query($sql); + if($v_rst = $sgbd->fetch_assoc($rst)) $EXISTS = $v_rst["n"]; + $sgbd->free_result($rst); + } + catch(Exception $e){ + return false; + } + return $EXISTS; + } + + function add_groupe($id_user, $nom, $image, $description, $email, $contact_form, $captcha){ + $sgbd = $this->sgbd(); + try{ + $sql = + "INSERT INTO #--sml_authors(id_user, nom, image, description, email, contact_form, captcha) VALUES" + ."( ".$this->eq($id_user) + .", ".$this->eq($nom) + .", ".$this->eq($image) + .", ".$this->eq($description) + .", ".$this->eq($email) + .", ".$this->eq($contact_form) + .", ".$this->eq($captcha) + .")"; + $sgbd->query($sql); + } + catch(Exception $e){ + return false; + } + return true; + } + + function set_groupe($id, $nom, $image, $description, $email, $contact_form, $captcha){ + if(($groupe = $this->groupe($id)) === false) return false; + $sgbd = $this->sgbd(); + try{ + $sql = + "UPDATE #--sml_authors SET" + ." nom=".$this->eq($nom) + .", image=".$this->eq($image) + .", description=".$this->eq($description) + .", email=".$this->eq($email) + .", contact_form=".$this->eq($contact_form) + .", captcha=".$this->eq($captcha) + ." WHERE id=".$id; + $sgbd->query($sql); + } + catch(Exception $e){ + return false; + } + if($nom != $groupe["nom"]){ + $groupe["nom"] = $nom; + if(!$this->maj_source_xml_groupe($groupe)) return false; + } + return true; + } + + function del_groupe($id){ + $sgbd = $this->sgbd(); + try{ + $sql = "SELECT count(*) as n FROM #--sml_sources_authors WHERE id_author=".$this->eq($id); + $rst = $sgbd->query($sql); + if($v_rst = $sgbd->fetch_assoc($rst)) $HAS_SOURCES = $v_rst["n"]; + $sgbd->free_result($rst); + if($HAS_SOURCES) return 1; + $sql = "DELETE FROM #--sml_authors WHERE id=".$this->eq($id); + $sgbd->query($sql); + } + catch(Exception $e){ + return false; + } + return true; + } + + } + +?> \ No newline at end of file diff --git a/app/data/modules/sql/sml_data_licences.php b/app/data/modules/sql/sml_data_licences.php new file mode 100644 index 0000000..90445bb --- /dev/null +++ b/app/data/modules/sql/sml_data_licences.php @@ -0,0 +1,95 @@ +sgbd(); + $env = $this->env(); + $licences = array("list" => array(), "total" => 0); + try{ + $SELECT = "SELECT *"; + $FROM = " FROM #--sml_licences"; + $WHERE = ""; + $LIMIT = (isset($start) && $env->config("max_list") ? " LIMIT ".$env->config("max_list")." OFFSET ".$start : ""); + $sql = "SELECT count(*) as n FROM(".$SELECT.$FROM.$WHERE.") res"; + $rst = $sgbd->query($sql); + if($v_rst = $sgbd->fetch_assoc($rst)) $licences["total"] = $v_rst["n"]; + $sgbd->free_result($rst); + if($licences["total"] > 0){ + $sql = "SELECT * FROM(".$SELECT.$FROM.$WHERE.$LIMIT.") res"; + $rst = $sgbd->query($sql); + while($v_rst = $sgbd->fetch_assoc($rst)) $licences["list"][$v_rst["id"]] = $v_rst; + $sgbd->free_result($rst); + } + } + catch(Exception $e) { $licences = false; } + return $licences; + } + + function licence($id){ + $sgbd = $this->sgbd(); + $licence = array(); + try{ + $sql = "SELECT * from #--sml_licences WHERE id=".$this->eq($id); + $rst = $sgbd->query($sql); + if($v_rst = $sgbd->fetch_assoc($rst)) $licence = $v_rst; + $sgbd->free_result($rst); + } + catch(Exception $e) { $licence = false; } + return $licence; + } + + function add_licence($nom, $url){ + $sgbd = $this->sgbd(); + try{ + $sql = + "INSERT INTO #--sml_licences(nom, url) VALUES" + ."( ".$this->eq($nom) + .", ".$this->eq($url) + .")"; + $sgbd->query($sql); + } + catch(Exception $e) { return false; } + return true; + } + + function set_licence($id, $nom, $url){ + if(($licence = $this->licence($id)) !== false){ + $sgbd = $this->sgbd(); + try{ + $sql = + "UPDATE #--sml_licences SET" + ." nom=".$this->eq($nom) + .", url=".$this->eq($url) + ." WHERE id=".$id; + $sgbd->query($sql); + if($nom != $licence["nom"] || $url != $licence["url"]){ + $licence["nom"] = $nom; + $licence["url"] = $url; + if(!$this->maj_source_xml_licence($licence)) return false; + } + } + catch(Exception $e) { return false; } + return true; + } + return false; + } + + function del_licence($id){ + $sgbd = $this->sgbd(); + try{ + $sql = "SELECT count(*) as n FROM #--sml_sources WHERE licence=".$this->eq($id); + $rst = $sgbd->query($sql); + if($v_rst = $sgbd->fetch_assoc($rst)) $USED = $v_rst["n"]; + $sgbd->free_result($rst); + if($USED) return 1; + $sql = "DELETE FROM #--sml_licences WHERE id=".$this->eq($id); + $sgbd->query($sql); + } + catch(Exception $e) { return false; } + return true; + } + + } + +?> \ No newline at end of file diff --git a/app/data/modules/sql/sml_data_source_groupes.php b/app/data/modules/sql/sml_data_source_groupes.php new file mode 100644 index 0000000..de997f9 --- /dev/null +++ b/app/data/modules/sql/sml_data_source_groupes.php @@ -0,0 +1,131 @@ +env(); + $sgbd = $this->sgbd(); + try{ + $sql = + "SELECT #--sml_authors.*" + .", #--sml_sources_authors.id_sources_access as id_groupe_status" + ." FROM #--sml_authors, #--sml_sources_authors" + ." WHERE #--sml_sources_authors.id_author=#--sml_authors.id" + ." AND #--sml_sources_authors.id_source=".$this->eq($id_source); + $rst = $sgbd->query($sql); + $groupes = array(); + while($v_rst = $sgbd->fetch_assoc($rst)) + { $v_rst["image_uri"] = + ( $v_rst["image"] ? + $env->path("content")."uploads/".$v_rst["image"] + : "" + ); + $groupes[$v_rst["id"]] = $v_rst; + } + $sgbd->free_result($rst); + } + catch(Exception $e) { return false; } + return $groupes; + } + + function add_source_groupe($id_source, $id_groupe, $id_groupe_status) + { $sgbd = $this->sgbd(); + try{ + $sql = + "INSERT INTO #--sml_sources_authors(id_source, id_author, id_sources_access) VALUES" + ."( ".$this->eq($id_source) + .", ".$this->eq($id_groupe) + .", ".$this->eq($id_groupe_status) + .")"; + $sgbd->query($sql); + } + catch(Exception $e) { return false; } + return true; + } + + function set_source_groupe($id, $id_groupe_status) + { if(($groupe = $this->groupe($id)) !== false) + { $sgbd = $this->sgbd(); + try{ + $sql = + "UPDATE #--sml_sources_authors SET" + ." id_sources_access=".$this->eq($id_groupe_status) + ." WHERE id=".$id; + $sgbd->query($sql); + } + catch(Exception $e) { return false; } + return true; + } + return false; + } + + function del_source_groupes($id_source) + { $sgbd = $this->sgbd(); + try{ + $sql = "DELETE FROM #--sml_sources_authors WHERE id_source=".$this->eq($id_source); + $sgbd->query($sql); + } + catch(Exception $e) { return false; } + return true; + } + + function del_source_groupe($id) + { $sgbd = $this->sgbd(); + try{ + $sql = "DELETE FROM #--sml_sources_authors WHERE id=".$this->eq($id); + $sgbd->query($sql); + } + catch(Exception $e) { return false; } + return true; + } + +// -------------------------------------------------------------------- + + function id_groupe_status_admin() { return 1; } + function id_groupe_status_editeur() { return 2; } + function id_groupe_status_contributeur() { return 3; } + + function get_admin_groupe($groupes) + { $groupe = array(); + if(is_array($groupes)) foreach($groupes as $source_groupe) + { if($source_groupe["id_groupe_status"] == $this->id_groupe_status_admin()) + { $groupe = $source_groupe; + break; + } + } + return $groupe; + } + + function source_permissions($source, $id_user) + { $permissions = array + ( "admin" => false, + "editeur" => false, + "contributeur" => false + ); + foreach($source["groupes"] as $id_groupe => $source_groupe) + { if($source_groupe["id_user"] == $id_user) + { if($source_groupe["id_groupe_status"] == $this->id_groupe_status_admin()) + { $permissions["admin"] = true; + $permissions["editeur"] = true; + $permissions["contributeur"] = true; + } + elseif($source_groupe["id_groupe_status"] == $this->id_groupe_status_editeur()) + { $permissions["editeur"] = true; + $permissions["contributeur"] = true; + } + elseif($source_groupe["id_groupe_status"] == $this->id_groupe_status_contributeur()) + { $permissions["contributeur"] = true; + } + } + } + return $permissions; + } + + } + +?> \ No newline at end of file diff --git a/app/data/modules/sql/sml_data_sources.php b/app/data/modules/sql/sml_data_sources.php new file mode 100644 index 0000000..8e8056e --- /dev/null +++ b/app/data/modules/sql/sml_data_sources.php @@ -0,0 +1,817 @@ +status)) $this->status = $this->init_sources_status(); + return $this->status; + } + + function init_sources_status(){ + $sgbd = $this->sgbd(); + $env = $this->env(); + $status = array(); + try{ + $sql = "SELECT * FROM #--sml_classes"; + $rst = $sgbd->query($sql); + while($v_rst = $sgbd->fetch_assoc($rst)) $status[$v_rst["id"]] = $v_rst; + $sgbd->free_result($rst); + } + catch(Exception $e) { $status = false; } + return $status; + } + + # ---------------------------------------------------------------------------------------- + # sources + # + + function init_sources_table(){ + return true; + } + + function sources($params){ + $start = isset($params["start"]) ? $params["start"] : null; + $id_user = isset($params["id_user"]) ? $params["id_user"] : null; + $id_groupe = isset($params["id_groupe"]) ? $params["id_groupe"] : null; + $status = isset($params["status"]) ? $params["status"] : null; + $id_source = isset($params["id_source"]) ? $params["id_source"] : null; + $id_composition = isset($params["id_composition"]) ? $params["id_composition"] : null; + $id_source_derivation = isset($params["id_source_derivation"]) ? $params["id_source_derivation"] : null; + $id_licence = isset($params["id_licence"]) ? $params["id_licence"] : null; + $order_by = isset($params["order_by"]) ? $params["order_by"] : "ordre"; + $order = isset($params["order"]) ? $params["order"] : "ASC"; + $sgbd = $this->sgbd(); + $env = $this->env(); + $ORDER_FIELD_EXISTS = false; + $ORDER_FROM_SOURCES_INFOS = !$ORDER_FIELD_EXISTS; + $sources = array("list" => array(), "total" => 0); + $COUNT_SELECT = "SELECT count(*) as n"; + $SELECT = "SELECT #--sml_sources.*, #--sml_sources.id_class as status"; + if($ORDER_FROM_SOURCES_INFOS){ + if($order_by == "ordre"){ + $SELECT .= ", (0 + #--sml_sources_infos.`value`) as ordre"; + } + else{ + $SELECT .= ", #--sml_sources_infos.`value` as ".$this->eq($order_by, false); + } + } + $FROM = "#--sml_sources"; + if(isset($id_user)) $FROM .= ", #--sml_authors, #--sml_sources_authors"; + elseif(isset($id_groupe)) $FROM .= ", #--sml_sources_authors"; + if(isset($id_source)) $FROM .= ", #--sml_source_compositions"; + elseif(isset($id_composition) && $id_composition) $FROM .= ", #--sml_source_compositions"; + if(isset($id_source_derivation)) $FROM .= ", #--sml_source_derivations"; + $FROM = " FROM (".$FROM.")"; + if($ORDER_FROM_SOURCES_INFOS){ + $FROM .= + " LEFT JOIN #--sml_sources_infos" + ." ON (#--sml_sources_infos.id_source=#--sml_sources.id AND #--sml_sources_infos.`key`=".$this->eq($order_by).")"; + } + $WHERE = ""; + if(isset($id_user)) $WHERE .= + ($WHERE ? " AND " : " WHERE ") + ." #--sml_sources.id=#--sml_sources_authors.id_source" + ." AND #--sml_sources_authors.id_author=#--sml_authors.id" + ." AND #--sml_authors.id_user=".$this->eq($id_user) + ." AND #--sml_sources_authors.id_sources_access=".$this->id_groupe_status_admin(); + if(isset($id_groupe)) $WHERE .= + ($WHERE ? " AND " : " WHERE ") + ." #--sml_sources.id=#--sml_sources_authors.id_source" + ." AND #--sml_sources_authors.id_author=".$this->eq($id_groupe) + ." AND #--sml_sources_authors.id_sources_access=".$this->id_groupe_status_admin(); + if(isset($status)) $WHERE .= + ($WHERE ? " AND " : " WHERE ") + ." #--sml_sources.id_class=".$this->eq($status); + if(isset($id_source)) $WHERE .= + ($WHERE ? " AND " : " WHERE ") + ." #--sml_sources.id=#--sml_source_compositions.id_composition" + ." AND #--sml_source_compositions.id_source=".$this->eq($id_source); + elseif(isset($id_composition)) + { if($id_composition) + { $WHERE .= + ($WHERE ? " AND " : " WHERE ") + ." #--sml_sources.id=#--sml_source_compositions.id_source" + ." AND #--sml_source_compositions.id_composition=".$this->eq($id_composition); + } + else + { if(($sources_ids = $this->source_compositions(array("id_composition" => ""))) !== false) + { if($sources_ids) + { $NOT_IN = ""; + foreach($sources_ids as $in_source_id) $NOT_IN .= ($NOT_IN ? "," : "").$in_source_id; + $WHERE .= ($WHERE ? " AND " : " WHERE ")." #--sml_sources.id NOT IN(".$NOT_IN.")"; + } + } + else return false; + } + } + if(isset($id_source_derivation)) $WHERE .= + ($WHERE ? " AND " : " WHERE ") + ." #--sml_sources.id=#--sml_source_derivations.id_source" + ." AND #--sml_source_derivations.derivation=".$this->eq($this->source_xml_url($id_source_derivation)); + if(isset($id_licence)) $WHERE .= + ($WHERE ? " AND " : " WHERE ") + ." #--sml_sources.licence=".$this->eq($id_licence); + $ORDER_BY = " ORDER BY ".$order_by." ".$order; + $LIMIT = (isset($start) && $env->config("max_list") ? " LIMIT ".$env->config("max_list")." OFFSET ".$start : ""); + try{ + $sql = $COUNT_SELECT.$FROM.$WHERE; + $rst = $sgbd->query($sql); + if($v_rst = $sgbd->fetch_assoc($rst)) $sources["total"] = $v_rst["n"]; + $sgbd->free_result($rst); + if($sources["total"]) + { $sql = $SELECT.$FROM.$WHERE.$ORDER_BY.$LIMIT; + $rst = $sgbd->query($sql); + $OK = true; + while($v_rst = $sgbd->fetch_assoc($rst)){ + if(($sources["list"][$v_rst["id"]] = $this->load_source($v_rst)) === false){ + $OK = false; + break; + } + } + $sgbd->free_result($rst); + if(!$OK) return false; + } + } + catch(Exception $e) { $sources = false; } + return $sources; + } + + function source($id, $load = false){ + $sgbd = $this->sgbd(); + try{ + $sql = "SELECT #--sml_sources.*, #--sml_sources.id_class as status FROM #--sml_sources WHERE id=".$this->eq($id); + $rst = $sgbd->query($sql); + $source = array(); + if($v_rst = $sgbd->fetch_assoc($rst)){ + $source = $load ? $this->load_source($v_rst) : $this->get_source_from_v_rst($v_rst); + } + $sgbd->free_result($rst); + } + catch(Exception $e) { $source = false; } + return $source; + } + + function get_source_from_v_rst($v_rst){ + $sgbd = $this->sgbd(); + $source = $this->empty_source(); + foreach($v_rst as $rst_key => $rst_value) $source[$rst_key] = $rst_value; + try{ + $si_sql = "SELECT * FROM #--sml_sources_infos WHERE id_source=".$this->eq($source["id"]); + $si_rst = $sgbd->query($si_sql); + while($v_si_rst = $sgbd->fetch_assoc($si_rst)){ + if(!isset($source[$v_si_rst["key"]])) $source[$v_si_rst["key"]] = $v_si_rst["value"]; + } + $sgbd->free_result($si_rst); + if($source["reference"]){ + if(!is_array($source["reference"])){ + $reference_url = $source["reference"]; + $source["reference"] = $this->empty_source(); + $source["reference"]["xml"]["url"] = $reference_url; + } + } + else{ + if(!is_array($source["licence"])){ + $source["licence"] = array( + "id" => $source["licence"] + ); + } + } + } + catch(Exception $e) { $source = false; } + return $source; + } + + function load_source($source){ + $env = $this->env(); + if(!isset($source["id"])) return false; + $source = $this->get_source_from_v_rst($source); + $source["xml"] = array + ( "url" => $this->source_xml_url($source["id"]), + "content" => $this->get_source_xml($source["id"]) + ); + $source["documents"] = array(); + if(($source["groupes"] = $this->source_groupes($source["id"])) === false) return false; + $source["image_uri"] = + ( isset($source["image"]) && $source["image"] ? + $env->path("content")."uploads/".$source["image"] + : "" + ); + if(($source["has_sources"] = $this->has_sources($source["id"])) === false) return false; + if(($source["has_derivations"] = $this->source_derivations(array("derivation" => $source["id"]))) === false) return false; + if(($source["derivations"] = $this->source_derivations(array("id_source" => $source["id"]))) === false) return false; + if(($source["reference"] = $this->source_reference($source)) === false) return false; + if(!$source["reference"]) + { if(($source["documents"] = $this->source_documents($source["id"])) === false) return false; + } + return $source; + } + + function add_source + ( $groupes, + $titre, + $status, + $licence, + $documents = array(), + $reference = array(), + $derivations = array(), + $infos = array() + ) + { $sgbd = $this->sgbd(); + $source = array + ( "groupes" => $groupes, + "titre" => $reference ? null : $titre, + "status" => $status, + "licence" => $reference ? null : $licence, + "reference" => $reference ? $reference : null, + "date_creation" => isset($infos["date_creation"]) ? $infos["date_creation"] : null, + "date_inscription" => isset($infos["date_inscription"]) ? $infos["date_inscription"] : date("Y-m-d") + ); + try{ + $sql = + "INSERT INTO #--sml_sources(id_class, reference, titre, licence, date_creation, date_inscription)" + ." VALUES" + ."( ".$this->eq($source["status"]) + .", ".$this->eq($source["reference"] ? $source["reference"]["xml"]["url"] : null) + .", ".$this->eq($source["titre"]) + .", ".$this->eq($source["licence"]) + .", ".$this->eq($source["date_creation"]) + .", ".$this->eq($source["date_inscription"]) + .")"; + $sgbd->query($sql); + $id = $sgbd->insert_id(); + foreach($source["groupes"] as $id_groupe => $groupe) + { if($groupe["id"] && $groupe["id_groupe_status"]) + { if(!$this->add_source_groupe($id, $groupe["id"], $groupe["id_groupe_status"])) return false; + } + else return false; + } + if(isset($infos["date_creation"])) unset($infos["date_creation"]); + if(isset($infos["date_inscription"])) unset($infos["date_inscription"]); + foreach($infos as $key => $value){ + $sql = + "INSERT INTO #--sml_sources_infos(id_source, `key`,`value`)" + ." VALUES" + ."( ".$this->eq($id) + .", ".$this->eq($key) + .", ".$this->eq($value) + .")"; + $sgbd->query($sql); + } + } + catch(Exception $e) { return false; } + foreach($derivations as $source_derivation) + { if + ( ( $id_source_derivation = $this->add_source_derivation + ( $id, + $source_derivation["xml"]["url"], + $source_derivation["xml"]["use_edit_content"] ? $source_derivation["xml"]["content"] : "" + ) + ) === false + ) + { return false; + } + } + if($reference) + { if($reference["xml"]["use_edit_content"]) + { if(!$this->set_edit_reference_content($id, $reference["xml"]["content"])) + { return false; + } + } + } + else + { foreach($documents as $document) + { if(!$this->add_source_document($id, $document)) return false; + } + } + if(!$this->set_source_xml($id)) return false; + return $id; + } + + function set_source + ( $id, + $groupes, + $titre, + $status, + $licence, + $documents = array(), + $reference = array(), + $derivations = array(), + $infos = array() + ) + { if($source = $this->source($id)) + { $sgbd = $this->sgbd(); + $source = array + ( "groupes" => $groupes, + "titre" => $reference ? null : $titre, + "licence" => $reference ? null : $licence, + "reference" => $reference ? $reference : null, + "date_creation" => isset($infos["date_creation"]) ? $infos["date_creation"] : null + ); + try{ + $sql = + "UPDATE #--sml_sources SET" + ." reference=".$this->eq($source["reference"] ? $source["reference"]["xml"]["url"] : null) + .", titre=".$this->eq($source["titre"]) + .", licence=".$this->eq($source["licence"]) + .", date_creation=".$this->eq($source["date_creation"]) + ." WHERE id=".$this->eq($id); + $sgbd->query($sql); + if(!$this->del_source_groupes($id)) return false; + foreach($source["groupes"] as $id_groupe => $groupe) + { if($groupe["id"] && $groupe["id_groupe_status"]){ + if(!$this->add_source_groupe($id, $groupe["id"], $groupe["id_groupe_status"])) return false; + } + else return false; + } + $sql = "DELETE FROM #--sml_sources_infos WHERE id_source=".$this->eq($id); + $sgbd->query($sql); + if(isset($infos["date_creation"])) unset($infos["date_creation"]); + if(isset($infos["date_inscription"])) unset($infos["date_inscription"]); + foreach($infos as $key => $value) + { $sql = + "INSERT INTO #--sml_sources_infos(id_source, `key`,`value`)" + ." VALUES" + ."( ".$this->eq($id) + .", ".$this->eq($key) + .", ".$this->eq($value) + .")"; + $sgbd->query($sql); + } + } + catch(Exception $e) { return false; } + if(!$this->del_source_derivations($id)) return false; + if(!$this->del_edit_reference_content($id)) return false; + if(!$this->del_source_documents($id)) return false; + foreach($derivations as $source_derivation) + { if + ( ( $id_source_derivation = $this->add_source_derivation + ( $id, + $source_derivation["xml"]["url"], + $source_derivation["xml"]["use_edit_content"] ? $source_derivation["xml"]["content"] : "" + ) + ) === false + ) + { return false; + } + } + if($reference) + { if($reference["xml"]["use_edit_content"]) + { if(!$this->set_edit_reference_content($id, $reference["xml"]["content"])) + { return false; + } + } + } + else{ + foreach($documents as $document){ + if(!$this->add_source_document($id, $document)) return false; + } + } + if(!$this->set_source_xml($id)) return false; + return true; + } + return false; + } + + function set_source_info($id_source, $key, $value){ + $sgbd = $this->sgbd(); + try{ + $sql = + "SELECT id FROM #--sml_sources_infos" + ." WHERE id_source=".$this->eq($id_source) + ." AND `key`=".$this->eq($key); + $rst = $sgbd->query($sql); + $id = null; + if($v_rst = $sgbd->fetch_assoc($rst)) $id = $v_rst["id"]; + $sgbd->free_result($rst); + if(isset($id)) $sql = + "UPDATE #--sml_sources_infos SET" + ." `value`=".$this->eq($value) + ." WHERE id=".$this->eq($id); + else $sql = + "INSERT INTO #--sml_sources_infos(id_source, `key`,`value`)" + ." VALUES" + ."( ".$this->eq($id_source) + .", ".$this->eq($key) + .", ".$this->eq($value) + .")"; + $sgbd->query($sql); + if(!isset($id)) $id = $sgbd->insert_id(); + } + catch(Exception $e) { return false; } + return $id; + } + + function del_source($id){ + $sgbd = $this->sgbd(); + if(!$this->del_source_compositions(array("id_source" => $id, "id_composition" => $id))) return false; + if(!$this->del_edit_reference_content($id)) return false; + if(!$this->del_source_derivations($id)) return false; + if(!$this->del_source_xml($id)) return false; + if(!$this->del_source_documents($id)) return false; + if(!$this->del_source_groupes($id)) return false; + try{ + $sql = "DELETE FROM #--sml_sources_infos WHERE id_source=".$this->eq($id); + $sgbd->query($sql); + $sql = "DELETE FROM #--sml_sources WHERE id=".$this->eq($id); + $sgbd->query($sql); + } + catch(Exception $e) { return false; } + return true; + } + + # ---------------------------------------------------------------------------------------- + # derivations de sources + # + + function init_source_derivations() + { $sgbd = $this->sgbd(); + $rst = $sgbd->table_exists("#--sml_source_derivations"); + if(isset($rst)) + { if(!$rst) + { return + "table manquante" + ."
" + ."
" + ."
"
+          ."(table_prefix)source_derivations :\n"
+          ."\n"
+          ."  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,\n"
+          ."  id_source INT NOT NULL,\n"
+          ."  derivation VARCHAR NOT NULL\n"
+          ."\n"
+          ."
"; + } + } + else return "impossible de chercher la table #--sml_source_derivations"; + return true; + } + + function source_derivations($params) + { $sgbd = $this->sgbd(); + $env = $this->env(); + $derivations = array(); + // sources dont "id_source" est une derivation + if(isset($params["id_source"])){ + try{ + $sql = + "SELECT *" + ." FROM #--sml_source_derivations" + ." WHERE #--sml_source_derivations.id_source=".$this->eq($params["id_source"]); + $rst = $sgbd->query($sql); + while($v_rst = $sgbd->fetch_assoc($rst)) + { $derivations[$v_rst["id"]] = array(); + $derivation_edit_file = $this->derivation_edit_xml_path($v_rst["id_source"], $v_rst["id"]); + if(file_exists($derivation_edit_file)) + { if(($derivation_edit_content = $this->get_edit_derivation_content($v_rst["id_source"], $v_rst["id"])) !== false) + { if(($derivations[$v_rst["id"]] = $this->source_xml_read($v_rst["derivation"], $derivation_edit_content)) !==false) + { $derivations[$v_rst["id"]]["xml"] = array + ( "url" => $v_rst["derivation"], + "content" => $derivation_edit_content, + "use_edit_content" => true + ); + } + else return false; + } + else return false; + } + else + { if(($derivations[$v_rst["id"]] = $this->source_xml_read($v_rst["derivation"])) !==false) + { $derivations[$v_rst["id"]]["id_source"] = $v_rst["id_source"]; + } + else $derivations[$v_rst["id"]] = $this->empty_source(); + } + $derivations[$v_rst["id"]]["id_source"] = $v_rst["id_source"]; + } + $sgbd->free_result($rst); + } + catch(Exception $e) { return false; } + return $derivations; + } + // sources qui derivent de "derivation" + elseif(isset($params["derivation"])) + { $source_xml_url = $params["derivation"]; + if(preg_match("/^[0-9]+$/", $source_xml_url)) $source_xml_url = $this->source_xml_url($source_xml_url); + try{ + $sql = + "SELECT #--sml_sources.*" + ." FROM #--sml_sources, #--sml_source_derivations" + ." WHERE #--sml_sources.id=#--sml_source_derivations.id_source" + ." AND #--sml_source_derivations.derivation=".$this->eq($source_xml_url); + $rst = $sgbd->query($sql); + if(!isset($rst)) return false; + while($v_rst = $sgbd->fetch_assoc($rst)) $derivations[$v_rst["id"]] = $v_rst; + $sgbd->free_result($rst); + } + catch(Exception $e) { return false; } + return $derivations; + } + return false; + } + + function source_derivation($id){ + $sgbd = $this->sgbd(); + $env = $this->env(); + $derivation = array(); + try{ + $sql = + "SELECT *" + ." FROM #--sml_source_derivations" + ." WHERE #--sml_source_derivations.id=".$this->eq($id); + $rst = $sgbd->query($sql); + if($v_rst = $sgbd->fetch_assoc($rst)) $derivation = $v_rst; + $sgbd->free_result($rst); + } + catch(Exception $e) { return false; } + return $derivation; + } + + function add_source_derivation($id_source, $derivation, $edit_content = "") + { $sgbd = $this->sgbd(); + try{ + $sql = + "INSERT INTO #--sml_source_derivations(id_source, derivation)" + ." VALUES" + ."( ".$this->eq($id_source) + .", ".$this->eq($derivation) + .")"; + $sgbd->query($sql); + $id_source_derivation = $sgbd->insert_id(); + } + catch(Exception $e) { return false; } + if($edit_content) + { if(!$this->set_edit_derivation_content($id_source, $id_source_derivation, $edit_content)) + { return false; + } + } + return $id_source_derivation; + } + + function set_source_derivation($id_source_derivation, $id_source, $derivation, $edit_content = "") + { $sgbd = $this->sgbd(); + try{ + $sql = + "UPDATE #--sml_source_derivations SET" + ." id_source=".$this->eq($id_source) + .", derivation=".$this->eq($derivation) + ." WHERE id=".$this->eq($id_source_derivation); + $sgbd->query($sql); + } + catch(Exception $e) { return false; } + if($edit_content) + { if(!$this->set_edit_derivation_content($id_source, $id_source_derivation, $edit_content)) + { return false; + } + } + return true; + } + + function del_source_derivation($id_source_derivation) + { if(($derivation = $this->source_derivation($id_source_derivation)) !== false) + { if(($derivations = $this->source_derivations(array("id_source" => $derivation["id_source"]))) !== false) + { $sgbd = $this->sgbd(); + try{ + $sql = "DELETE FROM #--sml_source_derivations WHERE id=".$this->eq($id_source_derivation); + $sgbd->query($sql); + } + catch(Exception $e) { return false; } + if(count($derivations) > 1) + { return $this->del_edit_derivation_content($derivation["id_source"], $id_source_derivation); + } + else return $this->del_edit_derivations($derivation["id_source"]); + } + } + return false; + } + + function del_source_derivations($id_source) + { $sgbd = $this->sgbd(); + try{ + $sql = "DELETE FROM #--sml_source_derivations WHERE id_source=".$this->eq($id_source); + $sgbd->query($sql); + } + catch(Exception $e) { return false; } + return $this->del_edit_derivations($id_source); + } + + # ---------------------------------------------------------------------------------------- + # references + # + + function source_reference($source) + { $reference = array(); + if($source["reference"]) + { if(!is_array($source["reference"])) + { $source["reference"] = array + ( "url" => $source["reference"], + "content" => "", + "use_edit_content" => false + ); + } + $reference_edit_file = $this->reference_edit_xml_path($source["id"]); + if(file_exists($reference_edit_file)) + { if(($reference_edit_content = $this->get_edit_reference_content($source["id"])) !== false) + { if(($reference = $this->source_xml_read($source["reference"], $reference_edit_content)) !==false) + { $reference["xml"] = array + ( "url" => $source["reference"]["xml"]["url"], + "content" => $reference_edit_content, + "use_edit_content" => true + ); + } + else return false; + } + else return false; + } + else + { if(($reference = $this->source_xml_read($source["reference"]["xml"]["url"])) ===false) + { $reference = $this->empty_source(); + } + } + } + return $reference; + } + + # ---------------------------------------------------------------------------------------- + # documents + # + + function source_documents($id_source) + { $sgbd = $this->sgbd(); + $documents = array(); + try{ + $sql = "SELECT * FROM #--sml_source_documents WHERE id_source=".$this->eq($id_source); + $rst = $sgbd->query($sql); + if(!isset($rst)) return false; + while($v_rst = $sgbd->fetch_assoc($rst)) $documents[$v_rst["id"]] = $v_rst; + $sgbd->free_result($rst); + } + catch(Exception $e) { return false; } + return $documents; + } + + function add_source_document($id_source, $document) + { $sgbd = $this->sgbd(); + try{ + $sql = + "INSERT INTO #--sml_source_documents(id_source, nom, url)" + ." VALUES" + ."( ".$this->eq($id_source) + .", ".$this->eq($document["nom"]) + .", ".$this->eq($document["url"]) + .")"; + $sgbd->query($sql); + } + catch(Exception $e) { return false; } + return $sgbd->insert_id(); + } + + function del_source_documents($id_source) + { $sgbd = $this->sgbd(); + try{ + $sql = "DELETE FROM #--sml_source_documents WHERE id_source=".$this->eq($id_source); + $sgbd->query($sql); + } + catch(Exception $e) { return false; } + return true; + } + + # ---------------------------------------------------------------------------------------- + # compositions de sources + # + + function source_compositions($params) + { $id_source = isset($params["id_source"]) ? $params["id_source"] : null; + $id_composition = isset($params["id_composition"]) ? $params["id_composition"] : null; + $sgbd = $this->sgbd(); + $env = $this->env(); + $compositions = array(); + if(isset($id_source)){ + try{ + $sql = "SELECT * FROM #--sml_source_compositions WHERE id_source=".$this->eq($id_source); + $rst = $sgbd->query($sql); + while($v_rst = $sgbd->fetch_assoc($rst)) + { if(!isset($compositions[$v_rst["id_source"]])) $compositions[$v_rst["id_source"]] = array(); + $compositions[$v_rst["id_source"]][] = $v_rst["id_composition"]; + } + $sgbd->free_result($rst); + } + catch(Exception $e) { return false; } + return $compositions; + } + elseif(isset($id_composition)) + { if($id_composition){ + try{ + $sql = + "SELECT * FROM #--sml_source_compositions WHERE id_composition=".$this->eq($id_composition); + $rst = $sgbd->query($sql); + while($v_rst = $sgbd->fetch_assoc($rst)) + { if(!isset($compositions[$v_rst["id_composition"]])) $compositions[$v_rst["id_composition"]] = array(); + $compositions[$v_rst["id_composition"]][] = $v_rst["id_source"]; + } + $sgbd->free_result($rst); + } + catch(Exception $e) { return false; } + return $compositions; + } + else{ + try{ + $sql = + "SELECT DISTINCT id_source FROM #--sml_source_compositions"; + $rst = $sgbd->query($sql); + while($v_rst = $sgbd->fetch_assoc($rst)) $compositions[] = $v_rst["id_source"]; + $sgbd->free_result($rst); + } + catch(Exception $e) { return false; } + return $compositions; + } + } + return false; + } + + function set_source_composition($id_source, $id_composition){ + $sgbd = $this->sgbd(); + try{ + $sql = + "INSERT INTO #--sml_source_compositions(id_source, id_composition) VALUES" + ."( ".$this->eq($id_source) + .", ".$this->eq($id_composition) + .")"; + $sgbd->query($sql); + } + catch(Exception $e) { return false; } + return $this->set_source_xml($id_composition); + } + + function del_source_compositions($params){ + $res = true; + $id_source = isset($params["id_source"]) ? $params["id_source"] : null; + $id_composition = isset($params["id_composition"]) ? $params["id_composition"] : null; + $to_delete = array(); + $to_update = array(); + if(isset($id_composition)) $to_update[] = $id_composition; + $sgbd = $this->sgbd(); + if(isset($id_source)){ + try{ + $sql = "SELECT * FROM #--sml_source_compositions WHERE id_source=".$this->eq($id_source); + $rst = $sgbd->query($sql); + while($v_rst = $sgbd->fetch_assoc($rst)) $to_update[] = $v_rst["id_composition"]; + $sgbd->free_result($rst); + } + catch(Exception $e) { return false; } + } + try{ + $sql = "DELETE FROM #--sml_source_compositions"; + $WHERE = ""; + $WHERE .= (isset($id_source) ? ($WHERE ? " OR " : " WHERE ")."id_source=".$this->eq($id_source) : ""); + $WHERE .= (isset($id_composition) ? ($WHERE ? " OR " : " WHERE ")."id_composition=".$this->eq($id_composition) : ""); + $sql .= $WHERE; + $sgbd->query($sql); + } + catch(Exception $e) { return false; } + foreach($to_update as $id_source_xml){ + if(!$this->set_source_xml($id_source_xml)) return false; + } + return true; + } + + function has_sources($id_composition) + { $sgbd = $this->sgbd(); + $env = $this->env(); + try{ + $sql = "SELECT count(*) as n FROM #--sml_source_compositions WHERE id_composition=".$this->eq($id_composition); + $rst = $sgbd->query($sql); + $has_sources = 0; + if($v_rst = $sgbd->fetch_assoc($rst)) $has_sources = $v_rst["n"]; + $sgbd->free_result($rst); + } + catch(Exception $e) { return false; } + return $has_sources; + } + + function source_ariane($id_source, $ariane = array()) + { if(($compositions = $this->source_compositions(array("id_source" => $id_source))) !== false) + { if(isset($compositions[$id_source]) && $compositions[$id_source]) + { foreach($compositions[$id_source] as $id_composition) + { if(($ariane = $this->source_ariane($id_composition, $ariane)) !== false) + { if(($ariane[$id_composition] = $this->source($id_composition)) !== false) + { + } + else $ariane = false; + } + else $ariane = false; + break; + } + } + } + else $ariane = false; + return $ariane; + } + + } + +?> \ No newline at end of file diff --git a/app/data/modules/sql/sml_data_sources_cache_db.php b/app/data/modules/sql/sml_data_sources_cache_db.php new file mode 100644 index 0000000..2497e58 --- /dev/null +++ b/app/data/modules/sql/sml_data_sources_cache_db.php @@ -0,0 +1,59 @@ +sgbd(); + $cache = array(); + try{ + $sql = "SELECT * FROM #--sml_source_cache"; + $rst = $sgbd->query($sql); + while($v_rst = $sgbd->fetch_assoc($rst)) $cache[$v_rst["id"]] = $v_rst; + $sgbd->free_result($rst); + } + catch(Exception $e) { $cache = false; } + return $cache; + } + + function source_cache_infos_db($url){ + $sgbd = $this->sgbd(); + $cache_infos = array(); + try{ + $sql = "SELECT * FROM #--sml_source_cache WHERE url=".$this->eq($url); + $rst = $sgbd->query($sql); + if($v_rst = $sgbd->fetch_assoc($rst)) $cache_infos = $v_rst; + $sgbd->free_result($rst); + } + catch(Exception $e) { $cache_infos = false; } + return $cache_infos; + } + + function add_source_cache_db($url, $cache_index){ + $sgbd = $this->sgbd(); + try{ + $sql = + "INSERT INTO #--sml_source_cache(url, id_source, last_update) VALUES" + ."( ".$this->eq($url) + .", ".$cache_index + .", '".date("Y-m-d H:i:s")."'" + .")"; + $sgbd->query($sql); + } + catch(Exception $e) { return false; } + return true; + } + + function del_source_cache_db($id_cache_data){ + $env = $this->env(); + $sgbd = $this->sgbd(); + try{ + $sql = "DELETE FROM #--sml_source_cache WHERE id=".$this->eq($id_cache_data); + $sgbd->query($sql); + } + catch(Exception $e) { return false; } + return true; + } + + } + +?> \ No newline at end of file diff --git a/app/helpers/mw_helper_sourceml_out.php b/app/helpers/mw_helper_sourceml_out.php new file mode 100644 index 0000000..a1f962b --- /dev/null +++ b/app/helpers/mw_helper_sourceml_out.php @@ -0,0 +1,33 @@ +mois($regs[2])." ".$regs[1]; + } + return $date; + } + + function mois($n){ + switch($n){ + case 1: $mois = "jan"; break; + case 2: $mois = "fev"; break; + case 3: $mois = "mars"; break; + case 4: $mois = "avr"; break; + case 5: $mois = "mai"; break; + case 6: $mois = "juin"; break; + case 7: $mois = "juil"; break; + case 8: $mois = "aout"; break; + case 9: $mois = "sept"; break; + case 10: $mois = "oct"; break; + case 11: $mois = "nov"; break; + case 12: $mois = "dec"; break; + default: $mois = $n; + } + return $mois; + } + + } + +?> \ No newline at end of file diff --git a/app/observers/mw_observer_sourceml.php b/app/observers/mw_observer_sourceml.php new file mode 100644 index 0000000..924c1b4 --- /dev/null +++ b/app/observers/mw_observer_sourceml.php @@ -0,0 +1,48 @@ +env(); + $out_config = $env->get_out_config(); + $out_config["groupe_view_albums"] = array( + "type" => "checkbox", + "default" => 0, + "text" => "Lister les albums sur la page d'un groupe" + ); + $out_config["colonne_logo_groupe"] = array( + "type" => "checkbox", + "default" => 1, + "text" => "Afficher le logo du groupe courant dans la colonne" + ); + $out_config["albums_menu"] = array( + "type" => "checkbox", + "default" => 1, + "text" => "Afficher les albums du groupe courant dans la colonne" + ); + $out_config["nom_groupe"] = array( + "type" => "checkbox", + "default" => 1, + "text" => "Afficher le nom du groupe courant dans la colonne" + ); + $env->set_out_config($out_config); + } + + function after_action(){ + $env = $this->env(); + if($env->etat("mod") == "users"){ + $env->add_js_file($env->path("mw_path")."libs/tiny_mce/tiny_mce.js"); + $env->add_js_file($env->path("mw_path")."libs/tiny_mce/plugins/tinybrowser/tb_tinymce.js.php"); + } + if($env->etat("mod") == "sources"){ + $env->add_js_file($env->out_url("js/jquery-1.8.3.min.js")); + $env->add_js_file($env->out_url("js/jquery.colorbox-min.js")); + $env->add_js_file($env->out_url("js/jquery-ui-1.8.12.custom.min.js")); + $env->add_css_file($env->out_url("css/colorbox.css")); + $env->add_css_file($env->out_url("css/ui-lightness/jquery-ui-1.8.12.custom.css")); + } + } + + } + +?> \ No newline at end of file diff --git a/app/out/default/config.xml b/app/out/default/config.xml new file mode 100644 index 0000000..315e9ed --- /dev/null +++ b/app/out/default/config.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/app/out/default/css/actions/forms_sourceml.css b/app/out/default/css/actions/forms_sourceml.css new file mode 100644 index 0000000..a5ceae3 --- /dev/null +++ b/app/out/default/css/actions/forms_sourceml.css @@ -0,0 +1 @@ +@import url("sources.css"); \ No newline at end of file diff --git a/app/out/default/css/actions/sources.css b/app/out/default/css/actions/sources.css new file mode 100644 index 0000000..bee10b0 --- /dev/null +++ b/app/out/default/css/actions/sources.css @@ -0,0 +1,463 @@ +/* ------------------------------- liste groupes ----------- */ + +ul.groupes +{ list-style-type: none; +} + +ul.groupes li +{ margin: 10px 10px 10px 100px; + padding: 0px; +/* float: left;*/ + width: 370px; +} + +ul.groupes li h4 +{ font-size: 16px; + margin: 0px; + padding: 0px; +} + +ul.groupes li h4 a +{ display: block; + padding: 5px; + width: 370px; + height: 100px; +} + +ul.groupes li h4 a img +{ display: block; + float: left; +} + +ul.groupes li h4 a span +{ float: right; + display: block; + padding: 3px; + text-align: right; + width: 238px; +} + +ul.groupes li .infos li +{ margin: 0px 0px 0px 5px; + padding: 0px; +} + +/* ------------------------------- page groupe ----------- */ + +.description +{ padding: 15px 50px 15px 50px; + font-size: 0.9em; +} + +.description p +{ text-align: justify; +} + +/* ------------------------------- page album ----------- */ + +p#play_all +{ +} + +p#play_all a +{ display: block; + float: right; + margin: 0px 20px 15px 25px; + padding: 5px 7px 5px 37px; + line-height: 25px; +} + +/* ------------------------------- groupe box (colonne) --- */ + +.logo_groupe +{ text-align: center; + height: 150px; + width: 220px; +} + +#colonne ul#album_links +{ margin: 32px 18px 0px 0px; +} + +#colonne ul#album_links li +{ list-style-type: none; + margin: 0px; + padding: 0px; +} + +#colonne ul#album_links li a +{ display: block; + padding: 5px 5px 0px 5px; +} + +#colonne ul.menu_albums +{ list-style-type: none; + margin-left: 0px; + margin: 0px 0px 10px 0px; +} + +#colonne ul.menu_albums li +{ margin-left: 0px; + width: 220px; + margin: 5px 0px 5px 0px; +} + +#colonne ul.menu_albums li a +{ display: block; + height: 90px; + padding: 5px; +} + +#colonne ul.menu_albums li a span +{ display: block; + float: right; + padding: 10px 5px 0px 5px; +} + +ul#lien_contact +{ margin: 20px 18px 0px 0px; + padding: 0px; +} + +ul#lien_contact li +{ list-style-type: none; + margin: 0px; + padding: 0px; +} + +ul#lien_contact li a +{ display: block; + text-align: right; + padding: 5px 5px 0px 5px; +} + +/* ------------------------------- albums (page groupe) --- */ + +#center ul.menu_albums +{ margin: 32px 18px 0px 0px; +} + +#center ul.menu_albums li +{ list-style-type: none; + margin: 0px; + padding: 0px; +} + +#center ul.menu_albums li a +{ display: block; + padding: 5px 5px 0px 5px; +} + +#center h3.menu_albums +{ margin: 0px 0px 10px 10px; +} + +#center ul.menu_albums +{ list-style-type: none; + margin-left: 0px; + margin: 0px 0px 10px 10px; +} + +#center ul.menu_albums li +{ margin-left: 0px; + width: 220px; + margin: 5px 0px 5px 10px; +/* float: left;*/ +} + +#center ul.menu_albums li a +{ display: block; + height: 90px; + padding: 5px; +} + +#center ul.menu_albums li a span +{ display: block; + float: right; + padding: 10px 5px 0px 5px; + max-width: 100px; +} + +/* ------------------------ blocs source -------------------- */ + +ul.sources +{ list-style-type: none; +} + +ul.sources li +{ margin: 10px 5px 0px 5px; + padding: 5px; +} + +.playing_download +{ padding: 5px; + margin-top: 10px; +} + +.sources h5 +{ font-size: 1em; + padding: 3px 10px 3px 10px; +} + +.sources h5 span +{ font-weight: normal; +} + +.sources h5 span.small +{ font-size: 0.9em +} + +.sources h5 .auteur +{ float: right; + font-weight: normal; +} + +.licence +{ float: right; + margin: 3px 10px 0px 0px; + text-align: right; +} + +ul.documents +{ list-style-type: none; +} + +ul.documents li +{ margin: 0px; + padding: 0px; + clear: left; +} + +/* ------ player */ + +.loading_player{ + opacity: 0.5; + background-image: url(../../icons/player_loading.gif); + background-position: center; + background-repeat: no-repeat; +} + +.player_progress +{ width: 100%; + height: 5px; + font-size: 1px; + line-height: 1px; + overflow: hidden; + margin: 0px 0px 0px 0px; + position: relative; + cursor: pointer; +} + +.player_progress .loaded +{ width: 0; + height: 5px; +} + +.player_progress .position +{ width: 0; + height: 5px; + position: absolute; + top: 0px; +} + +.player_controls, .no_player +{ margin: 2px 5px 0 0; + float: left; + width: 40px; +} + +.player_controls a +{ text-decoration: none; +} + +.player_controls a.pause +{ display: none; +} + +.player_controls a.stop +{ display: none; +} + +/* ------ pistes / derivations */ + +.block_list_toggle +{ font-weight: normal; + font-size: 0.8em; + position: relative; + top: -2px; +} + +.pistes +{ margin: 0px 13px 10px 45px; + padding-left: 0px; +} + +.derivation +{ margin: 0px 13px 10px 45px; + padding-left: 0px; +} + +.source_arbo h3 +{ padding-left: 35px; +} + +.derivation h3 +{ font-size: 1em; + padding-left: 35px; + font-weight: normal; +} + +.pistes h3 +{ font-size: 1em; + padding-left: 35px; + font-weight: normal; +} + +.no_source +{ margin: 5px 5px 10px 15px; + font-style: italic; + font-size: 0.9em; +} + +.source_arbo ul.menu_source +{ margin: 5px 0px 0px 0px; + padding: 0px; + list-style-type: none; +} + +.source_arbo ul.menu_source li +{ margin: 0px; + padding: 0px; +} + +/* ------------------------------- liste groupes ----------- */ + +ul.groupes li h4 a +{ border: solid 1px #d9d9d9; + border-radius: 3px 3px 3px 3px; + -moz-border-radius: 3px 3px 3px 3px; +} + +/* ------------------------------- page album ----------- */ + +p#play_all a +{ border: solid 1px #c0c0c0; + border-radius: 3px 3px 3px 3px; + -moz-border-radius: 3px 3px 3px 3px; + background-image: url("../icons/ecouter.png"); + background-repeat: no-repeat; + background-position: 6px 6px; + background-color: #ffffff; +} + +/* ----------------------------------- sources --------- */ + +ul.albums li a +{ border: solid 1px #555555; +} + +.logo_groupe +{ /*border: solid 1px #e9e9e9;*/ + background-color: #ffffff; + border-radius: 3px 3px 3px 3px; + -moz-border-radius: 3px 3px 3px 3px; +} + +ul#lien_contact li a +{ border-bottom: solid 1px #d9d9d9; +} + +#colonne ul#album_links +{ /*border-bottom: solid 1px #333333;*/ +} + +#colonne ul#album_links li +{ +} + +#colonne ul.menu_albums li +{ border: solid 1px #d9d9d9; + background-color: #ffffff; +} + +#center ul.menu_albums li +{ border: solid 1px #d9d9d9; + float: left; +} + +.track +{ border: solid 1px #ffffff; + border-radius: 3px 3px 3px 3px; + -moz-border-radius: 3px 3px 3px 3px; +} + +.track h5 +{ background-color: #ffffff; + border-radius: 3px 3px 0px 0px; + -moz-border-radius: 3px 3px 0px 0px; +} + +.playing_track +{ border: solid 1px #dedede; + background-color: #ffffff; + border-radius: 3px 3px 3px 3px; + -moz-border-radius: 3px 3px 3px 3px; +} + +.player_progress +{ background-color: #ececec; +} + +.player_progress .loaded +{ background-color: #dedede; +} + +.player_progress .position +{ background-color: #999999; +} + +.player_controls a img +{ border: none; +} + +.source_arbo ul.menu_source +{ float: right; + margin: 0px 10px 1px 0px; +} + +.source_arbo ul.menu_source li +{ float: right; + padding: 1px; +} + +.source_arbo ul.menu_source li a +{ display: block; + text-align: center; + background-color: #151515; + border-radius: 3px 3px 0px 0px; + -moz-border-radius: 3px 3px 0px 0px; + padding: 2px 5px 2px 5px; +} + +.source_arbo ul.menu_source li a:hover +{ +} + +.source_arbo ul.menu_source li.icon a +{ border: none; + padding: 2px 2px 2px 2px; +} + +.pistes +{ border-left: none; +} + +.derivation +{ border-left: none; +} + +.loading +{ background-image: url("../icons/ajax-loader.gif"); + background-repeat: no-repeat; + background-position: 5px 5px; +} \ No newline at end of file diff --git a/app/out/default/css/actions/users_albums.css b/app/out/default/css/actions/users_albums.css new file mode 100644 index 0000000..24a7ae0 --- /dev/null +++ b/app/out/default/css/actions/users_albums.css @@ -0,0 +1 @@ +@import url("../sourceml_accounts.css"); \ No newline at end of file diff --git a/app/out/default/css/actions/users_groupes.css b/app/out/default/css/actions/users_groupes.css new file mode 100644 index 0000000..24a7ae0 --- /dev/null +++ b/app/out/default/css/actions/users_groupes.css @@ -0,0 +1 @@ +@import url("../sourceml_accounts.css"); \ No newline at end of file diff --git a/app/out/default/css/actions/users_morceaux.css b/app/out/default/css/actions/users_morceaux.css new file mode 100644 index 0000000..24a7ae0 --- /dev/null +++ b/app/out/default/css/actions/users_morceaux.css @@ -0,0 +1 @@ +@import url("../sourceml_accounts.css"); \ No newline at end of file diff --git a/app/out/default/css/actions/users_pistes.css b/app/out/default/css/actions/users_pistes.css new file mode 100644 index 0000000..24a7ae0 --- /dev/null +++ b/app/out/default/css/actions/users_pistes.css @@ -0,0 +1 @@ +@import url("../sourceml_accounts.css"); \ No newline at end of file diff --git a/app/out/default/css/colorbox.css b/app/out/default/css/colorbox.css new file mode 100644 index 0000000..89fea1c --- /dev/null +++ b/app/out/default/css/colorbox.css @@ -0,0 +1,67 @@ +#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;} +#cboxOverlay{position:fixed; width:100%; height:100%;} +#cboxMiddleLeft, #cboxBottomLeft{clear:left;} +#cboxContent{position:relative;} +#cboxLoadedContent{overflow:auto; text-align: left;} +#cboxTitle{margin:0;} +#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%;} +#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;} +.cboxPhoto{float:left; margin:auto; border:0; display:block;} +.cboxIframe{width:100%; height:100%; display:block; border:0;} + +#cboxOverlay{background:url(../images/colorbox/overlay.png) repeat 0 0;} +#colorbox{} + + #cboxTopLeft{width:21px; height:21px;} + #cboxTopRight{width:21px; height:21px;} + #cboxBottomLeft{width:21px; height:21px;} + #cboxBottomRight{width:21px; height:21px;} + #cboxMiddleLeft{width:21px;} + #cboxMiddleRight{width:21px;} + #cboxTopCenter{height:21px;} + #cboxBottomCenter{height:21px;} + #cboxContent{background:#ffffff; overflow:hidden; color: #555555; padding: 10px 10px 0px 10px; border-radius: 3px 3px 3px 3px; -moz-border-radius: 3px 3px 3px 3px;} + #cboxError{padding:50px; border:1px solid #ccc;} + #cboxLoadedContent{margin-bottom:28px;} + #cboxTitle{position:absolute; bottom:4px; left:0; text-align:center; width:100%; color:#949494;} + #cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;} + #cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;} + #cboxPrevious{position:absolute; bottom:0; left:0; background:url(../images/colorbox/controls.png) no-repeat -75px 0; width:25px; height:25px; text-indent:-9999px;} + #cboxPrevious.hover{background-position:-75px -25px;} + #cboxNext{position:absolute; bottom:0; left:27px; background:url(../images/colorbox/controls.png) no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;} + #cboxNext.hover{background-position:-50px -25px;} + #cboxLoadingOverlay{} + #cboxLoadingGraphic{background:url(../images/colorbox/loading.gif) no-repeat center center;} + #cboxClose{position:absolute; bottom:0; right:0; background:url(../images/colorbox/controls.png) no-repeat -25px 0; width:25px; height:25px; text-indent:-9999px;} + #cboxClose.hover{background-position:-25px -25px;} + +.cboxIE #cboxTopLeft, +.cboxIE #cboxTopCenter, +.cboxIE #cboxTopRight, +.cboxIE #cboxBottomLeft, +.cboxIE #cboxBottomCenter, +.cboxIE #cboxBottomRight, +.cboxIE #cboxMiddleLeft, +.cboxIE #cboxMiddleRight { + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF); +} + +.cboxIE6 #cboxTopLeft{background:url(../images/colorbox/ie6/borderTopLeft.png);} +.cboxIE6 #cboxTopCenter{background:url(../images/colorbox/ie6/borderTopCenter.png);} +.cboxIE6 #cboxTopRight{background:url(../images/colorbox/ie6/borderTopRight.png);} +.cboxIE6 #cboxBottomLeft{background:url(../images/colorbox/ie6/borderBottomLeft.png);} +.cboxIE6 #cboxBottomCenter{background:url(../images/colorbox/ie6/borderBottomCenter.png);} +.cboxIE6 #cboxBottomRight{background:url(../images/colorbox/ie6/borderBottomRight.png);} +.cboxIE6 #cboxMiddleLeft{background:url(../images/colorbox/ie6/borderMiddleLeft.png);} +.cboxIE6 #cboxMiddleRight{background:url(../images/colorbox/ie6/borderMiddleRight.png);} + +.cboxIE6 #cboxTopLeft, +.cboxIE6 #cboxTopCenter, +.cboxIE6 #cboxTopRight, +.cboxIE6 #cboxBottomLeft, +.cboxIE6 #cboxBottomCenter, +.cboxIE6 #cboxBottomRight, +.cboxIE6 #cboxMiddleLeft, +.cboxIE6 #cboxMiddleRight { + _behavior: expression(this.src = this.src ? this.src : this.currentStyle.backgroundImage.split('"')[1], this.style.background = "none", this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + this.src + ", sizingMethod='scale')"); +} diff --git a/app/out/default/css/colors.css b/app/out/default/css/colors.css new file mode 100644 index 0000000..9b50de8 --- /dev/null +++ b/app/out/default/css/colors.css @@ -0,0 +1,324 @@ +body +{ background-color: #ffffff; + color: #333333; +} + +a +{ text-decoration: none; + color: #000066; +} + +a img +{ border: none; +} + +a:hover +{ color: #c0c0c0; +} + +.navig +{ color: #333333; + border: solid 1px #c0c0c0; + background-color: #ffffff; + border-radius: 3px 3px 3px 3px; + -moz-border-radius: 3px 3px 3px 3px; +} + +.loading +{ background-image: url("../icons/ajax-loader.gif"); + background-repeat: no-repeat; + background-position: 5px 5px; +} + +/* ------------------------- messages --------------- */ + +.messages +{ border: solid 1px #c0c0c0; +} + +.erreur +{ border: solid 1px #c0c0c0; +} + +.redirect_message div +{ border: solid 1px #c0c0c0; +} + +/* ------------------------- blocs generaux --------- */ + +#header +{ padding-top: 10px; +} + +#header .content +{ border-bottom: solid 1px #d9d9d9; +} + +#colonne +{ /*border-right: dashed 1px #555555; */ +} + +#footer .content +{ border-top: solid 1px #e9e9e9; +} + +#footer .content p +{ color: #777777; +} + +/* ----------------------------------- menu top ----- */ + +#menu_top ul.menu li a +{ border: solid 1px #e9e9e9; + background-color: #ffffff; +} + +#menu_top ul.menu li ul li a +{ border-top: none; + border-right: solid 1px #333333; + border-bottom: none; + border-left: solid 1px #333333; + background-color: #050505; +} + +#menu_top ul.menu li ul li.last a +{ border-top: none; + border-right: solid 1px #333333; + border-bottom: solid 1px #333333; + border-left: solid 1px #333333; + background-color: #050505; +} + +/* ----------------------------------- admin --------- */ + +table.admin tr.hl td +{ border: solid 1px #d1d1d1; +} + +table.admin tr.hl:hover +{ background-color: #f9f9f9; +} + +input[type=text], input[type=file], input[type=password], textarea, select +{ border: solid 1px #999999; + color: #333333; +} + +input[type=submit], a.button +{ border: solid 1px #d1d1d1; + border-radius: 3px 3px 3px 3px; + -moz-border-radius: 3px 3px 3px 3px; +} + +input[type=submit]:hover, a.button:hover +{ border: solid 1px #d1d1d1; + border-radius: 3px 3px 3px 3px; + -moz-border-radius: 3px 3px 3px 3px; +} + +ul.admin +{ border-bottom: dashed 1px #c0c0c0; +} + +ul.admin_form_head +{ border: solid 1px #c0c0c0; + border-radius: 3px 3px 3px 3px; + -moz-border-radius: 3px 3px 3px 3px; +} + +ul.admin_form_content ul.admin +{ border-bottom: none; +} + +ul.admin li a +{ border: solid 1px #d1d1d1; +} + +.admin_source_infos ul.admin li a +{ border: none; + background-color: #101010; + color: #c0c0c0; +} + +ul.admin li a.add +{ background-image: url("../icons/add.gif"); + background-repeat: no-repeat; + background-position: 3px 6px; + border: solid 1px #d1d1d1; +} + +ul.admin li a:hover +{ +} + +.admin_source_infos +{ border: solid 1px #c0c0c0; +/* background-color: #0a0a0a;*/ + border-radius: 3px 3px 3px 3px; + -moz-border-radius: 3px 3px 3px 3px; +} + +.admin_source_infos ul.admin li a:hover +{ border: none; + background-color: #333333; + color: #c0c0c0; +} + +#documents .document +{ border: solid 1px #c0c0c0; +} + +/* ------------------------------- plugins ----------- */ + +ul.plugins li +{ border: solid 1px #c0c0c0; +} + +ul.plugins li.enabled +{ background-color: #ffffff; +} + +ul.plugins li.disabled +{ background-color: #f7f7f7; +} + +ul.plugins li.uninstalled +{ background-color: #e5e5e5; +} + +ul.plugins li ul.plugin_links li +{ border-top: none; + border-right: none; + border-bottom: none; + border-left: solid 1px #c0c0c0; +} + +ul.plugins li ul.plugin_links li input +{ border: solid 1px #c0c0c0; +} + +/* ------------------------------- liste groupes ----------- */ + +ul.groupes li h4 a +{ border: solid 1px #d9d9d9; + border-radius: 3px 3px 3px 3px; + -moz-border-radius: 3px 3px 3px 3px; +} + +/* ------------------------------- page album ----------- */ + +p#play_all a +{ border: solid 1px #c0c0c0; + border-radius: 3px 3px 3px 3px; + -moz-border-radius: 3px 3px 3px 3px; + background-image: url("../icons/ecouter.png"); + background-repeat: no-repeat; + background-position: 6px 6px; + background-color: #ffffff; +} + +/* ----------------------------------- sources --------- */ + +ul.albums li a +{ border: solid 1px #555555; +} + +.logo_groupe +{ /*border: solid 1px #e9e9e9;*/ + background-color: #ffffff; + border-radius: 3px 3px 3px 3px; + -moz-border-radius: 3px 3px 3px 3px; +} + +ul#lien_contact li a +{ border-bottom: solid 1px #d9d9d9; +} + +#colonne ul#album_links +{ /*border-bottom: solid 1px #333333;*/ +} + +#colonne ul#album_links li +{ +} + +#colonne ul.menu_albums li +{ border: solid 1px #d9d9d9; + background-color: #ffffff; +} + +#center ul.menu_albums li +{ border: solid 1px #d9d9d9; + float: left; +} + +.track +{ border: solid 1px #ffffff; + border-radius: 3px 3px 3px 3px; + -moz-border-radius: 3px 3px 3px 3px; +} + +.track h5 +{ background-color: #ffffff; + border-radius: 3px 3px 0px 0px; + -moz-border-radius: 3px 3px 0px 0px; +} + +.playing_track +{ border: solid 1px #dedede; + background-color: #ffffff; + border-radius: 3px 3px 3px 3px; + -moz-border-radius: 3px 3px 3px 3px; +} + +.player_progress +{ background-color: #ececec; +} + +.player_progress .loaded +{ background-color: #dedede; +} + +.player_progress .position +{ background-color: #999999; +} + +.player_controls a img +{ border: none; +} + +.source_arbo ul.menu_source +{ float: right; + margin: 0px 10px 1px 0px; +} + +.source_arbo ul.menu_source li +{ float: right; + padding: 1px; +} + +.source_arbo ul.menu_source li a +{ display: block; + text-align: center; + background-color: #151515; + border-radius: 3px 3px 0px 0px; + -moz-border-radius: 3px 3px 0px 0px; + padding: 2px 5px 2px 5px; +} + +.source_arbo ul.menu_source li a:hover +{ +} + +.source_arbo ul.menu_source li.icon a +{ border: none; + padding: 2px 2px 2px 2px; +} + +.pistes +{ border-left: none; +} + +.derivation +{ border-left: none; +} diff --git a/app/out/default/css/sourceml_accounts.css b/app/out/default/css/sourceml_accounts.css new file mode 100644 index 0000000..02e316a --- /dev/null +++ b/app/out/default/css/sourceml_accounts.css @@ -0,0 +1,65 @@ +img.logo{ + max-width: 100%; + height: auto; +} + +.document +{ margin: 5px; + padding: 5px; +} + +.document .delete +{ float: right; +} + +.document .clear +{ height: 5px; +} + +.xml_edit_content +{ display: block; + margin: 5px 10px 30px 0px; + text-align: right; +} + +.xml_edit_content textarea +{ width: 97%; +} + +ul.xml_infos +{ margin: 10px 10px 0px 20px; +} + +ul.xml_infos li +{ padding: 5px; + margin: 0px 0px 0px 20px; +} + +.admin_source_infos{ + border: solid 1px #c0c0c0; + border-radius: 3px 3px 3px 3px; + -moz-border-radius: 3px 3px 3px 3px; + margin: 0px 10px 10px 20px; + padding: 10px; +} + +.admin_source_infos ul.admin li a:hover +{ border: none; + background-color: #333333; + color: #c0c0c0; +} + +.admin_source_infos ul.admin_source_head +{ list-style-type: none; + margin: 0px 0px 0px 0px; + text-align: right; + padding-bottom: 10px; + padding-top: 5px; +} + + +#documents .document +{ border: solid 1px #c0c0c0; +} + + diff --git a/app/out/default/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/app/out/default/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png new file mode 100644 index 0000000000000000000000000000000000000000..29460f0ef34db4f18a80f960518e9b04dada21d6 GIT binary patch literal 384 zcmV-`0e}99P)kMRa>W>&2g2PjZ8lL>#>l-Cbhi_`NFUi-FUUIGAM-&VLd zFfRcv4(!_s7YF7g9LptUl7+IFE)LXL;z9s;1trOtm&i{E6!Wr7j_NgK0UX2)_zT8JCxgFa zjO49AQkJ~r<+>IG+_TYalhlB;s^ujOe%lzS_`9P8r8Fjq7DO78q!pCYm?RpI)R-hK eAg%sxlDq+o?9?C3V?i(g0000bvPcjKS|RKP(6sDcCAB(_QB%0978a<$Ah$!b|E zwn;|HO0i8cQj@~)s!ajF0S002ovPDHLkV1oEp BYH0uf literal 0 HcmV?d00001 diff --git a/app/out/default/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png b/app/out/default/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..abdc01082bf3534eafecc5819d28c9574d44ea89 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsY*{5$B>N1x91EQ4=4yQY-ImG zFPf9b{J;c_6SHRK%WcbN_hZpM=(Ry;4Rxv2@@2Y=$K57eF$X$=!PC{xWt~$(69B)$ BI)4BF literal 0 HcmV?d00001 diff --git a/app/out/default/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png b/app/out/default/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..9b383f4d2eab09c0f2a739d6b232c32934bc620b GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnour1U*q978O6-yYw{%b*}|_(02F z@qbE9)0CJMo;*v*PWv`Vh2h6EmG8IS-Cm{3U~` zFlmZ}YMcJY=eo?o%*@I?2`NblNeMudl#t?{+tN>ySr~=F{k$>;_x^_y?afmf9pRKH0)6?eSP?3s5hEr>mdKI;Vst E0O;M1& literal 0 HcmV?d00001 diff --git a/app/out/default/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/app/out/default/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png new file mode 100644 index 0000000000000000000000000000000000000000..39d5824d6af5456f1e89fc7847ea3599ea5fd815 GIT binary patch literal 3762 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 literal 0 HcmV?d00001 diff --git a/app/out/default/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/app/out/default/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..f1273672d253263b7564e9e21d69d7d9d0b337d9 GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^j6j^i!3HGVb)pi0l%l7LV~E7mxPQ=F85a&M@g_{ d|GeK{$Y5lo%PMu^>wln`44$rjF6*2UngE4^EGqy2 literal 0 HcmV?d00001 diff --git a/app/out/default/css/ui-lightness/images/ui-icons_222222_256x240.png b/app/out/default/css/ui-lightness/images/ui-icons_222222_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..b273ff111d219c9b9a8b96d57683d0075fb7871a GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/app/out/default/css/ui-lightness/images/ui-icons_228ef1_256x240.png b/app/out/default/css/ui-lightness/images/ui-icons_228ef1_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..a641a371afa0fbb08ba599dc7ddf14b9bfc3c84f GIT binary patch literal 4369 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 oBo%DI*Kv;w;*%(i9W@e{{5C=l}o! literal 0 HcmV?d00001 diff --git a/app/out/default/css/ui-lightness/images/ui-icons_ef8c08_256x240.png b/app/out/default/css/ui-lightness/images/ui-icons_ef8c08_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..85e63e9f604ce042d59eb06a8428eeb7cb7896c9 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/app/out/default/css/ui-lightness/images/ui-icons_ffd27a_256x240.png b/app/out/default/css/ui-lightness/images/ui-icons_ffd27a_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..e117effa3dca24e7978cfc5f8b967f661e81044f GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/app/out/default/css/ui-lightness/jquery-ui-1.8.12.custom.css b/app/out/default/css/ui-lightness/jquery-ui-1.8.12.custom.css new file mode 100644 index 0000000..3f7bf90 --- /dev/null +++ b/app/out/default/css/ui-lightness/jquery-ui-1.8.12.custom.css @@ -0,0 +1,578 @@ +/* + * jQuery UI CSS Framework 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } +.ui-helper-clearfix { display: inline-block; } +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { height:1%; } +.ui-helper-clearfix { display:block; } +/* end clearfix */ +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + +/* + * jQuery UI CSS Framework 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px + */ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; } +.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; } +.ui-widget-content a { color: #333333; } +.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; } +.ui-widget-header a { color: #ffffff; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; } +.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; } +.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; } +.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } +.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } +.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; } +.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } +.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } +.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } +.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; } + +/* Overlays */ +.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); } +.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/* + * jQuery UI Resizable 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Resizable#theming + */ +.ui-resizable { position: relative;} +.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; + /* http://bugs.jqueryui.com/ticket/7233 + - Resizable: resizable handles fail to work in IE if transparent and content overlaps + */ + background-image:url(data:); +} +.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } +.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } +.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } +.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } +.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } +.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } +.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } +.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } +.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* + * jQuery UI Selectable 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Selectable#theming + */ +.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } +/* + * jQuery UI Accordion 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Accordion#theming + */ +/* IE/Win - Fix animation bug - #4615 */ +.ui-accordion { width: 100%; } +.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } +.ui-accordion .ui-accordion-li-fix { display: inline; } +.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } +.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; } +.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } +.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } +.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } +.ui-accordion .ui-accordion-content-active { display: block; } +/* + * jQuery UI Autocomplete 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Autocomplete#theming + */ +.ui-autocomplete { position: absolute; cursor: default; } + +/* workarounds */ +* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ + +/* + * jQuery UI Menu 1.8.12 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Menu#theming + */ +.ui-menu { + list-style:none; + padding: 2px; + margin: 0; + display:block; + float: left; +} +.ui-menu .ui-menu { + margin-top: -3px; +} +.ui-menu .ui-menu-item { + margin:0; + padding: 0; + zoom: 1; + float: left; + clear: left; + width: 100%; +} +.ui-menu .ui-menu-item a { + text-decoration:none; + display:block; + padding:.2em .4em; + line-height:1.5; + zoom:1; +} +.ui-menu .ui-menu-item a.ui-state-hover, +.ui-menu .ui-menu-item a.ui-state-active { + font-weight: normal; + margin: -1px; +} +/* + * jQuery UI Button 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Button#theming + */ +.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ +.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ +button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ +.ui-button-icons-only { width: 3.4em; } +button.ui-button-icons-only { width: 3.7em; } + +/*button text element */ +.ui-button .ui-button-text { display: block; line-height: 1.4; } +.ui-button-text-only .ui-button-text { padding: .4em 1em; } +.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } +.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } +.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } +.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } +/* no icon support for input elements, provide padding by default */ +input.ui-button { padding: .4em 1em; } + +/*button icon element(s) */ +.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } +.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } +.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } +.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } +.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } + +/*button sets*/ +.ui-buttonset { margin-right: 7px; } +.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } + +/* workarounds */ +button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ +/* + * jQuery UI Dialog 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog#theming + */ +.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } +.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } +.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } +.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } +.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } +.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } +.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } +.ui-draggable .ui-dialog-titlebar { cursor: move; } +/* + * jQuery UI Slider 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider#theming + */ +.ui-slider { position: relative; text-align: left; } +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } + +.ui-slider-horizontal { height: .8em; } +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } +.ui-slider-horizontal .ui-slider-range-min { left: 0; } +.ui-slider-horizontal .ui-slider-range-max { right: 0; } + +.ui-slider-vertical { width: .8em; height: 100px; } +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } +.ui-slider-vertical .ui-slider-range-min { bottom: 0; } +.ui-slider-vertical .ui-slider-range-max { top: 0; }/* + * jQuery UI Tabs 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Tabs#theming + */ +.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ +.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } +.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } +.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } +.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } +.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } +.ui-tabs .ui-tabs-hide { display: none !important; } +/* + * jQuery UI Datepicker 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Datepicker#theming + */ +.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } +.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } +.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } +.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } +.ui-datepicker .ui-datepicker-prev { left:2px; } +.ui-datepicker .ui-datepicker-next { right:2px; } +.ui-datepicker .ui-datepicker-prev-hover { left:1px; } +.ui-datepicker .ui-datepicker-next-hover { right:1px; } +.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } +.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } +.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } +.ui-datepicker select.ui-datepicker-month-year {width: 100%;} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { width: 49%;} +.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } +.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } +.ui-datepicker td { border: 0; padding: 1px; } +.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } +.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } +.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { width:auto; } +.ui-datepicker-multi .ui-datepicker-group { float:left; } +.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } +.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } +.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } +.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } +.ui-datepicker-row-break { clear:both; width:100%; } + +/* RTL support */ +.ui-datepicker-rtl { direction: rtl; } +.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } +.ui-datepicker-rtl .ui-datepicker-group { float:right; } +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } + +/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ +.ui-datepicker-cover { + display: none; /*sorry for IE5*/ + display/**/: block; /*sorry for IE5*/ + position: absolute; /*must have*/ + z-index: -1; /*must have*/ + filter: mask(); /*must have*/ + top: -4px; /*must have*/ + left: -4px; /*must have*/ + width: 200px; /*must have*/ + height: 200px; /*must have*/ +}/* + * jQuery UI Progressbar 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Progressbar#theming + */ +.ui-progressbar { height:2em; text-align: left; } +.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } \ No newline at end of file diff --git a/app/out/default/icons/ajax-loader.gif b/app/out/default/icons/ajax-loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..09d621ede9dbe610877292e554c858d60573359e GIT binary patch literal 723 zcmZ?wbhEHb6ky3UH!ouR`=lAT{vl};VeEIUl!ouRtojadCecHBd+kyoPPMtdS z?%g|}ArPSWpWDwhB-q(8z|~04fSC~}s`yXJxhOTUBsE2$JhLQ2Au%hlA}2pFMK3ci zEuTU0CkrPxP?ZiyKgf{`thx#ceJPpqmMq|Ubc$)6gFv&z8PkHx)%R}in9s-lM6i9! zBZm__dd2Imak;LY=7h}zm4rkI)`WR0GG*E)?mKYn(8@QLmiIn?v-kDx2z`w?tc})! zof1sgG@1de?oQNs+@Zp$B*l}wBx#YxN$K-jdS4q!9hlC1plNUP#}nRyjb|@j-XZKa z^H3#V%=s`!CV{ zGZTv~S)?jgU+dnbH8)5Rn@L8H@VK@q;+ad}wo4-xl69peI z>rMAn>7QZ36tBx*W_EhPz6U`Z*qo#fG3yD?Ju5c7TU8{Z8nlJ?f$93++hq!-bARhP dGOMsv=2x69g9)2+eSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00H|+ zL_t(Y$HkVhOJhM0#(!^7{{#uhVP%zrfDmj1t6X8PFh#C74tZc{u&|LdRNrEKo6+L3MG-`Ux9Bx9cYNi<11aR z0W}kJEF!JB1yuFS6nz$vA#Z@HmVq|V5s`~O3YhW};FE~lvjkN21JDO9XPqROGyehX z#+0jS4LAhKz%RStYY}P8>Et``QA8%r*3a#dh5>m~Rd0c9;8a8sU>!IGwpI03RX4LS zmZNStSuyqdz?VqZ*QWF`li(+C1Kg?0aP;tzqV1@89BxFH6>p0h7>6d@FWMMiaK+z=z6=yBjbiB01wWpmtv9Ld&xVlG)QL70(Y)*K0-AbW|YuPgg)Rz^WF{?JY5BY;AZC9V-A&iT2y zsd*&~&PAz-C8;S2<(VZJ3hti10pX2&;y^|Ao-U3d8t0P}7BCnX85kJs*u7hLX~pw% zb2VzzymHbU#Xo%d^ou_^|Ms?C!I}GupZmG3x@ohj@+!qb38 OF?hQAxvXQL70(Y)*K0-AbW|YuPgg)Rz^WF(G?fWlz>8#C9V-A&iT2y zsd*&~&PAz-C8;S2<(VZJ3hti10pX2&;y^{2o-U3d8t0czcH}x>z`LtMbblhRW}dFm%TVQR2^-oap89rjIer(WQzTe6)g_ryGx z7|n_eX!`CZC#%6)-}{Dbwxq|h1qHK1MBmo_{~YLL$!I-M-7?E-tuoM322WQ%mvv4F FO#p#7R4)Jk literal 0 HcmV?d00001 diff --git a/app/out/default/icons/player_loading.gif b/app/out/default/icons/player_loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..45cd0c02ad242d3443fc873f2b8c3dd04281f1d3 GIT binary patch literal 847 zcmZ?wbhEHb6krfw_`<;O|NsBpyLbQj^XKHrlXvgl-Lq%U(W6H{fByXZ`SSw@4&1tR z>+033-@ku<{P^+v_wUc1J$v!uMFvuU;(u;G*N|Xm#{gF&Jp*P&pkBp)QqD!Gi6yBi z3gww4848J6i4{5di79%Sd1?6!ia%L6xqzy4K(>G!$-o+*pwO3+Id7?fNRFabOTwzP zGenL}lrnAjz;?5vA-b2vhAFc(V4^@PV`uB4zBQUU4W3ay7O5nC*yS;4fdgv-pu5*<>|Hn(-{gjt4u>v0=H?uP};XReTu;fv2}|U_B&<^oL6>a z;I;`cH(Wp`0?>!bpC@SC67kUDIuanlsk@}z@V#*(mzDEr zL+>pfElm&EJoIL$+}v2nz#*{j;u+Q(S=@S!;Vuq$_#zn=8F+Atwdxr3IbGrE%NFo@ z_Le8q-n5*VrA8&2H%616ryHxKL6Bf=P?*AGD00+cMYFRU+Zyp>+1*WZ7!{qKB-k@F zZfDvzLD{v*qRJ^Sq9J*A?xHeoA*F>1FAptFXiRA14Ru>4S#(E|Z)w46&ChB78?agf z@*6PrRygpu8VVdbDUlm1aeSwQN6&?}8yf5aT`VR{3ePokB$l};CVDVL1kd1T%r#xI zl`+Z1V+$L@s-1~RI$V9K4F$$x$w!nosQ=)7qr`4vW*(rX6`|jt(bKDf)zWyVr5-?! zaV&E%VK}tun4^;CM2-!!7AA1m<+ZYU8mM$g^vZdgZ{qdPVL#ZZThgr6)a)uHBCzDJ t?!|-^9SH}RehL_Na!72L?$FQYY@WfPZ^)9y8l&0Wqo&AU4N9J10036E6)FG# literal 0 HcmV?d00001 diff --git a/app/out/default/icons/stop.png b/app/out/default/icons/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..2a3134da97479a597d19399b8d5624992a92c12f GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^{2QL70(Y)*K0-AbW|YuPgg)Rz^WFfg8IHtpy56mbgZgIOpf) zrskC}I2WZRmZYXAlxLP?D7bt2281{Ai31g>db&7wy+3oEU)qhYGCkm^>bP0l+XkK75O{6 literal 0 HcmV?d00001 diff --git a/app/out/default/images/colorbox/border.png b/app/out/default/images/colorbox/border.png new file mode 100644 index 0000000000000000000000000000000000000000..f463a10d838aeba263ff44e5c3578dfe7ba07648 GIT binary patch literal 112 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI}$P6Txn<}3KQfvV}A+A9B|Ns9>Z_d99WHFWm z`2{zujf-{zawI%m978JNrXFPE1@f8<7E8}%%lTu>&#KnM&G`7uteHSj22WQ%mvv4F FO#q`M9f1G< literal 0 HcmV?d00001 diff --git a/app/out/default/images/colorbox/controls.png b/app/out/default/images/colorbox/controls.png new file mode 100644 index 0000000000000000000000000000000000000000..051b4a623e0dffe738ff60b912e7bf0a3e51cf53 GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^>w(yagAGV(Wp%#*QjEnx?oJHr&dIz4a@dl*-CY>| zgW!U_%O?XxI14-?iy0WWg+Z8+Vb&Z8pdfpRr>`sfZB|A>36=C->1jZrIi4<#Ar-gY z-ZA8AFyL{xc#ZqJj_pQ2y`|mGhKlcfo4OCHPYKB31*&9dIP>eiyutH5_n#ZO{r@HR zv5hBUM@xUX_^JX=;rCJ-3Oq&EFJ@BHSB<%-{!TArL$1Rf_47NJKu(5&j^n8%N2-+) z9tzpri(PR@)pt+!fkUdHd-}L$?3walx$=xX+jysRU!NxqR-aYHpej*X`K_Dz3yAOO L>gTe~DWM4fED&Dk literal 0 HcmV?d00001 diff --git a/app/out/default/images/colorbox/ie6/borderBottomCenter.png b/app/out/default/images/colorbox/ie6/borderBottomCenter.png new file mode 100644 index 0000000000000000000000000000000000000000..0d4475edf4e1ebb18d41db83915a21a9a6bc5977 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^j6f{P$P6U+&JlA5QfvV}A+A9B|Ns9>Z_d99WHFWm z`2{zujf-{za>PAd978JNY7Z)cbT)5ruP-ra%e~G}wTijXxbw&apdf>%tDnm{r-UW| DknJ7# literal 0 HcmV?d00001 diff --git a/app/out/default/images/colorbox/ie6/borderBottomLeft.png b/app/out/default/images/colorbox/ie6/borderBottomLeft.png new file mode 100644 index 0000000000000000000000000000000000000000..2775eba899d10d3dc6f8c4044ad69cb89a5f8499 GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^q9Dw|3?!p1cPs@`>H$6>u0R?BQd3j6Z{H4KpFe*d zCJdtg|NlSbL?0`V#ZwaG7u>*5G5>gk!F7ua0ST$+oA`j@!JaOTAr*10r#A97C`hm- z3dKH%oOr{aLpj2LsW&>nlF|6W##ZJ(&Vq|N!)H`n4WCnOwE6XE$$JkZ%dBmlKK#!l q^N>YH$6>u0R?BQd3j6Z{H4KpFe*d zCJdtg|NlSbL?0`V#ZwaG7u>*5G5>gk!F7ua0ST$+oA`j@p`I>|Ar*0Rk8R{_P!M3f za60r>rSy%6n-)#V7EE~whgkX^aO5~8RysR6J&4z+ys8}98}g<84F4bXKSykNqt5CV sw|{E#ePx# literal 0 HcmV?d00001 diff --git a/app/out/default/images/colorbox/ie6/borderMiddleLeft.png b/app/out/default/images/colorbox/ie6/borderMiddleLeft.png new file mode 100644 index 0000000000000000000000000000000000000000..a2d63d156e008a01fde9d2d68c531c34926a924a GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{Z$P6U8=aokQDYgKg5LY1m|NsA`H|O64NtXoq z1vjjXi*^HYL_A#_Ln`7}8#ZzRc@9(l|2O5zVPsZ_d99WHFWm z`2{zujf-{za>PAd978JNY7Z)cbT)5ruP@Q*%6-Zwv5L7-WU|;#pdf>%tDnm{r-UW| Dg{~b` literal 0 HcmV?d00001 diff --git a/app/out/default/images/colorbox/ie6/borderTopLeft.png b/app/out/default/images/colorbox/ie6/borderTopLeft.png new file mode 100644 index 0000000000000000000000000000000000000000..f9d458b5bba4a8cb84b9ee39a3844e258c1dcc20 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^q9Dw|3?!p1cPs@`>H$6>u0R?qNKH*WfByXT?c0H} z|NsBDZcF_MWbu>)`2{yHR2W1EWLV67bmi? zvo+on5)g6V?RfL6QIf literal 0 HcmV?d00001 diff --git a/app/out/default/images/colorbox/ie6/borderTopRight.png b/app/out/default/images/colorbox/ie6/borderTopRight.png new file mode 100644 index 0000000000000000000000000000000000000000..74b8583cfbb2e62a84ef04ba01064ecb4d70e72a GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^q9Dw|3?!p1cPs@`>H$6>u0R?Sq^70<1<#*9zkU05 zAmji4|I_}5*Z^5PB|(0{4Ga|#78wHb4Xz)Tc+|OiK2SW!)5S5QBChw?MqY;mf#VnJ z^}ggWcLpW1DoZ@PeSjlp!DT5|UGpg|kLp?vt)3@$_tm@JIJ0M=)Av-}@ro0Ud)StJ qkbTcp`HhbYABf8t?|bZq*G4@Nf;!!};89ZJ6T-G@yGywoYi%4?- literal 0 HcmV?d00001 diff --git a/app/out/default/images/colorbox/loading.gif b/app/out/default/images/colorbox/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..09d621ede9dbe610877292e554c858d60573359e GIT binary patch literal 723 zcmZ?wbhEHb6ky3UH!ouR`=lAT{vl};VeEIUl!ouRtojadCecHBd+kyoPPMtdS z?%g|}ArPSWpWDwhB-q(8z|~04fSC~}s`yXJxhOTUBsE2$JhLQ2Au%hlA}2pFMK3ci zEuTU0CkrPxP?ZiyKgf{`thx#ceJPpqmMq|Ubc$)6gFv&z8PkHx)%R}in9s-lM6i9! zBZm__dd2Imak;LY=7h}zm4rkI)`WR0GG*E)?mKYn(8@QLmiIn?v-kDx2z`w?tc})! zof1sgG@1de?oQNs+@Zp$B*l}wBx#YxN$K-jdS4q!9hlC1plNUP#}nRyjb|@j-XZKa z^H3#V%=s`!CV{ zGZTv~S)?jgU+dnbH8)5Rn@L8H@VK@q;+ad}wo4-xl69peI z>rMAn>7QZ36tBx*W_EhPz6U`Z*qo#fG3yD?Ju5c7TU8{Z8nlJ?f$93++hq!-bARhP dGOMsv=2x69g9)2+UU{crc4h8@qAkJEl10~!7q>s;6wwG+ x;Lym#%7w)E5SqaM?W?}pgPY2~zL+0j{rLCv$(}1!-+=Zpc)I$ztaD0e0s!7!I-dXl literal 0 HcmV?d00001 diff --git a/app/out/default/images/colorbox/overlay.png b/app/out/default/images/colorbox/overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..ddf9e09a61e5debb48299263ef880f4aa92ce46b GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1SGcvS$+jljKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgg)78zk~)wiD{_<%y1o-U3d9>?FF zF%)EA;9ybMdi1+~7MD0b(*@60$F4|jjanPF`fAqK|5c1xTnz2GH~Bn)nixD?{an^L HB{Ts5WP2|f literal 0 HcmV?d00001 diff --git a/app/out/default/js/actions/admin_cache.js b/app/out/default/js/actions/admin_cache.js new file mode 100644 index 0000000..f7241db --- /dev/null +++ b/app/out/default/js/actions/admin_cache.js @@ -0,0 +1,30 @@ +$(document).ready +( function() + { init_cache_radios(); + } +); + +function init_cache_radios() +{ $("#cache_actif_oui").click + ( function() + { $("#li_cache_maj_auto").slideDown(200); + if($("#cache_maj_auto_oui").get(0).checked) $("#li_cache_time").slideDown(200); + } + ); + $("#cache_actif_non").click + ( function() + { $("#li_cache_maj_auto").slideUp(200); + $("#li_cache_time").slideUp(200); + } + ); + $("#cache_maj_auto_oui").click + ( function() + { $("#li_cache_time").slideDown(200); + } + ); + $("#cache_maj_auto_non").click + ( function() + { $("#li_cache_time").slideUp(200); + } + ); +} diff --git a/app/out/default/js/actions/admin_sourceml.js b/app/out/default/js/actions/admin_sourceml.js new file mode 100644 index 0000000..e492f57 --- /dev/null +++ b/app/out/default/js/actions/admin_sourceml.js @@ -0,0 +1,17 @@ +function select_start_action(start_action) +{ if(start_action == "sources/groupe") + { $("#groupe_param").css("display", "none"); + $("#album_param").css("display", "none"); + return; + } + if(start_action == "sources/groupe/view") + { $("#groupe_param").css("display", "inline"); + $("#album_param").css("display", "none"); + return; + } + if(start_action == "sources/album/view") + { $("#groupe_param").css("display", "none"); + $("#album_param").css("display", "inline"); + return; + } +} diff --git a/app/out/default/js/actions/sources.js b/app/out/default/js/actions/sources.js new file mode 100644 index 0000000..670a016 --- /dev/null +++ b/app/out/default/js/actions/sources.js @@ -0,0 +1,380 @@ +$(document).ready( + function(){ + init_show_xml_links(); + init_players("*"); + init_player_listener(); + } +); + +// ----------------------------------------------------------------- +// player audio +// + +var current_document = false; +var autoplay_next = false; + +function init_players(target){ + $(target == "*" ? "audio" : target + " audio").each + ( function() + { var audio_elt = $(this).get(0); + var CAN_PLAY = false; + var id_document = $(this).attr("id").substring(6); + var id_source = null; + if((k = id_document.indexOf("_")) != -1) id_source = id_document.substring(0, k); + if(id_source){ + $(this).find("source").each( + function(){ + if(audio_elt.canPlayType($(this).attr("type"))) CAN_PLAY = true; + } + ); + if(CAN_PLAY){ + audio_elt.addEventListener("ended", track_ended, false); + $("#player_" + id_document + " .play").click(function() { play(id_document); return false; }); + $("#player_" + id_document + " .play").css("display", "inline"); + $("#player_" + id_document + " .pause").click(function() { pause(); return false; }); + $("#player_" + id_document + " .pause").css("display", "none"); + $("#player_" + id_document + " .stop").click(function() { stop(); return false; }); + $("#player_" + id_document + " .stop").css("display", "none"); + $("#document_" + id_document + " .no_player").remove(); + } + } + if(!CAN_PLAY) $("#player_" + id_document).remove(); + } + ); + $(target == "*" ? ".track" : target + " .track").each( + function(){ + if($(this).find(".player").size()){ + var id_source = $(this).attr("id").substring(6); + $(this).find(".player_progress").first().click( + function(e){ + if((progress_width = $(this).width()) != 0){ + play_source_from(id_source, (100 * (e.pageX - this.offsetLeft)) / progress_width); + } + } + ); + } + else $(this).find(".player_progress").first().css("cursor", "default"); + } + ); +} + +function init_player_listener(){ + setInterval("player_listener_update()", 300); +} + +function player_listener_update(){ + if( + (current_document != false) + && (source_id = get_current_source_id()) + && (current_audio = $("#audio_" + current_document).get(0)) + && ($("#track_" + source_id + " .player_progress").size()) + ){ + $("#track_" + source_id + " .player_progress .position").not( + "#track_" + source_id + " .pistes .player_progress .position").not( + "#track_" + source_id + " .derivation .player_progress .position").css( + "width", + Math.round((100 * current_audio.currentTime) / current_audio.duration) + "%" + ); + } +} + +function get_current_source_id(){ + if(current_document != false){ + if($("#document_" + current_document).size()){ + var source_document_id = $("#document_" + current_document).attr("id").substring(9); + if((k = source_document_id.indexOf("_")) != -1){ + return source_document_id.substring(0, k); + } + } + } + return false; +} + +function play_all(){ + autoplay_next = play_first_source(); +} + +function play_first_source(){ + var FOUND = false; + $(".track").not(".pistes .track").not(".derivation .track").each( + function(){ + if(!FOUND){ + $(this).find(".documents li").not(".pistes .documents li").not(".derivation .documents li").each( + function(){ + if(!FOUND){ + var source_document_id = $(this).attr("id").substring(9); + if(source_document_id.length > 0){ + if($("#player_" + source_document_id).size()){ + FOUND = true; + play(source_document_id); + } + } + } + } + ); + } + } + ); + return FOUND; +} + +function play_next_source(){ + var FOUND = false; + if(current_document != false){ + if($("#document_" + current_document).size()){ + var current_source_document_id = $("#document_" + current_document).attr("id"); + var current_source_id = get_current_source_id(); + if(current_source_id != false){ + var CURRENT_FOUND = false; + $(".track").not(".pistes .track").not(".derivation .track").each( + function(){ + if(!FOUND){ + if(CURRENT_FOUND){ + $(this).find(".documents li").not(".pistes .documents li").not(".derivation .documents li").each( + function(){ + if(!FOUND){ + var source_document_id = $(this).attr("id").substring(9); + if(source_document_id.length > 0){ + if($("#player_" + source_document_id).size()){ + FOUND = true; + play(source_document_id); + } + } + } + } + ); + } + else{ + if(current_source_id == $(this).attr("id").substring("6")){ + CURRENT_FOUND = true; + } + } + } + } + ); + } + } + } + return FOUND; +} + +function play(id_document){ + if(current_document == id_document){ + if($("#audio_" + current_document).get(0).paused){ + gui_state("playing"); + $("#audio_" + current_document).get(0).play(); + } + } + else{ + if(current_document != false){ + var audio_elt = $("#audio_" + current_document).get(0); + audio_elt.pause(); + audio_elt.currentTime = 0; + gui_state("stoped"); + } + current_document = id_document; + _play(0); + } +} + +function play_source_from(id_source, position){ + if( + (current_document != false) + && (current_source_id = get_current_source_id()) + && (id_source == current_source_id) + ){ + _play(position); + } + else{ + stop(); + var FOUND = false; + $("#track_" + id_source + " .documents li").each( + function(){ + if(!FOUND){ + var source_document_id = $(this).attr("id").substring(9); + if(source_document_id.length > 0){ + if($("#player_" + source_document_id).size()){ + FOUND = true; + current_document = source_document_id; + _play(position); + } + } + } + } + ); + } +} + +function _play(position){ + if(current_document != false){ + var audio_elt = $("#audio_" + current_document).get(0); + audio_elt.preload = "auto"; + audio_elt.addEventListener("loadeddata", track_loadeddata, false); + audio_elt.addEventListener("canplaythrough", track_canplaythrough, false); + audio_elt.addEventListener("playing", track_playing, false); + gui_state("loading"); + audio_elt.position = position; + audio_elt.load(); + } +} + +function track_loadeddata(event){ + var audio_elt = event.target; + audio_elt.removeEventListener("loadeddata", track_loadeddata, false); + if(current_document != false){ + audio_elt.currentTime = audio_elt.position ? (audio_elt.position * audio_elt.duration) / 100 : 0; + } +} + +function track_canplaythrough(event){ + var audio_elt = event.target; + audio_elt.removeEventListener("canplaythrough", track_canplaythrough, false); + audio_elt.play(); +} + +function track_playing(event){ + var audio_elt = event.target; + audio_elt.removeEventListener("playing", track_playing, false); + gui_state("playing"); +} + +function pause(){ + if(current_document != false){ + var audio_elt = $("#audio_" + current_document).get(0); + audio_elt.pause(); + gui_state("paused"); + } +} + +function stop(){ + if(current_document != false){ + var audio_elt = $("#audio_" + current_document).get(0); + audio_elt.pause(); + audio_elt.currentTime = 0; + gui_state("stoped"); + current_document = false; + } + autoplay_next = false; +} + +function track_ended(){ + gui_state("stoped"); + var current_audio = $("#audio_" + current_document).get(0); + current_audio.pause(); + if(current_audio.currentTime) current_audio.currentTime = 0; + if(autoplay_next) autoplay_next = play_next_source(); +} + +function gui_state(state){ + gui_blur(); + if(current_document != false){ + var source_id = get_current_source_id(); + $("#track_" + source_id).removeClass("loading_player"); + if(state == "playing"){ + $("#player_" + current_document).find(".play").css("display", "none"); + $("#player_" + current_document).find(".pause").css("display", "inline"); + $("#player_" + current_document).find(".stop").css("display", "inline"); + $("#track_" + source_id).removeClass("track"); + $("#track_" + source_id).addClass("playing_track"); + } + else if(state == "paused"){ + $("#player_" + current_document).find(".play").get(0).style.display = "inline"; + $("#player_" + current_document).find(".pause").get(0).style.display = "none"; + $("#player_" + current_document).find(".stop").get(0).style.display = "inline"; + $("#track_" + source_id).removeClass("track"); + $("#track_" + source_id).addClass("playing_track"); + } + else if(state == "stoped"){ + $("#player_" + current_document).find(".play").get(0).style.display = "inline"; + $("#player_" + current_document).find(".pause").get(0).style.display = "none"; + $("#player_" + current_document).find(".stop").get(0).style.display = "none"; + $("#track_" + source_id).removeClass("playing_track"); + $("#track_" + source_id).addClass("track"); + $("#track_" + source_id + " .player_progress .position").not( + "#track_" + source_id + " .pistes .player_progress .position").not( + "#track_" + source_id + " .derivation .player_progress .position").css("width", "0%"); + } + else if(state == "loading"){ + $("#track_" + source_id).addClass("loading_player"); + } + } +} + +function gui_blur(){ + if((current_document != false) && $("#player_" + current_document).size()){ + $("#player_" + current_document).find(".play").get(0).blur(); + $("#player_" + current_document).find(".pause").get(0).blur(); + $("#player_" + current_document).find(".stop").get(0).blur(); + } +} + +// ----------------------------------------------------------------- +// source xml +// + +var loaded = false; +var show_xml_links = {}; + +function show_xml(id){ + alert(xml_contents[id]); +} + +function init_show_xml_links(){ + for(var i in show_xml_links){ + $("#show_xml_" + i).colorbox(); + } + loaded = true; +} + +function set_show_xml_links(i){ + if(loaded) $("#show_xml_" + i).colorbox(); + else show_xml_links[i] = true; +} + +// ----------------------------------------------------------------- +// sources / derivations +// + +function toggle_source_list(id_block){ + var content = $("#source_list_" + id_block + " .pistes").html(); + if(content.length > 0){ + $("#source_list_" + id_block).slideUp(200); + $("#source_list_" + id_block + " .pistes").empty(); + $("#toggle_sources_list_" + id_block + ".block_list_toggle").html("[+]"); + } + else{ + $("#source_list_" + id_block).slideDown(200); + $("#toggle_sources_list_" + id_block + ".block_list_toggle").html("[-]"); + $("#source_list_" + id_block + " .pistes").html("
en chargement...
"); + $.ajax({ + url: mw_site_url + "index.php?e=content/sources/sources&id=" + id_block, + dataType: "html", + success: function(content){ + $("#source_list_" + id_block + " .pistes").html(content); + init_players("#source_list_" + id_block + " .pistes"); + } + }); + } +} + +function toggle_derivation_list(id_block){ + var content = $("#derivation_list_" + id_block + " .derivation").html(); + if(content.length > 0){ + $("#derivation_list_" + id_block).slideUp(200); + $("#derivation_list_" + id_block + " .derivation").empty(); + $("#toggle_derivation_list_" + id_block + ".block_list_toggle").html("[+]"); + } + else{ + $("#derivation_list_" + id_block).slideDown(200); + $("#toggle_derivation_list_" + id_block + ".block_list_toggle").html("[-]"); + $("#derivation_list_" + id_block + " .derivation").html("
en chargement...
"); + $.ajax({ + url: mw_site_url + "index.php?e=content/sources/derivations&id=" + id_block, + dataType: "html", + success: function(content){ + $("#derivation_list_" + id_block + " .derivation").html(content); + init_players("#derivation_list_" + id_block + " .derivation"); + } + }); + } +} diff --git a/app/out/default/js/actions/users.js b/app/out/default/js/actions/users.js new file mode 100644 index 0000000..3927192 --- /dev/null +++ b/app/out/default/js/actions/users.js @@ -0,0 +1,158 @@ +$(document).ready +( function() + { init_reference_select(); + init_tinymce(); + init_derivations(); + init_reference(); + } +); + +var last_document_id = 1; + +function select_groupe(id_groupe) +{ var content = + "" + + "

" + + "" + + "

"; + $("#album_select").html(content); +} + +function select_morceaux_groupe(id_groupe) +{ var content = + "" + + "

" + + "" + + "

"; + $("#morceau_select").html(content); +} + +function init_reference_select() +{ $("#is_derivation").click + ( function() + { if($(this).get(0).checked) $("#derivation_input").slideDown(200); + else $("#derivation_input").slideUp(200); + } + ); + $("#is_reference").click + ( function() + { if($(this).get(0).checked) + { $("#original_form").slideUp(200); + $("#reference_form").slideDown(200); + } + else + { $("#reference_form").slideUp(200); + $("#original_form").slideDown(200); + } + } + ); +} + +function add_document() +{ last_document_id++; + var id_document = last_document_id; + var content = "
\n" + + " \n" + + " \n" + + " \n" + + "
\n" + + " \n" + + " \n" + + "
\n"; + $("#documents").append(content); +} + +function del_document(id_document) +{ $("#document_" + id_document).remove(); +} + +function init_tinymce() +{ $(".tinymce").each + ( function() + { tinyMCE.execCommand("mceAddControl", true, $(this).attr("id")); + } + ); +} + +function init_toggle_edit_derivation_content(id_derivation) +{ $("#derivation_edit_" + id_derivation + " .use_edit_derivation_content").click + ( function() + { var id_derivation_content = $(this).attr("id"); + if(id_derivation_content.length > 28) + { id_derivation_content = id_derivation_content.substr(28); + if($(this).get(0).checked) + { $("#derivation_edit_" + id_derivation_content + " span").slideDown(200); + } + else + { $("#derivation_edit_" + id_derivation_content + " span").slideUp(200); + } + } + } + ); +} + +function init_derivations() +{ if(typeof(derivations) != "undefined") + { for(var id_derivation in derivations) + { init_toggle_edit_derivation_content(id_derivation); + $("#derivation_infos_" + id_derivation).slideDown(200); + } + } +} + +function init_toggle_edit_reference_content(){ + $("#reference_edit .use_edit_reference_content").click( + function(){ + if($(this).get(0).checked){ + $("#reference_edit span").slideDown(200); + } + else{ + $("#reference_edit span").slideUp(200); + } + } + ); +} + +function init_reference() +{ init_toggle_edit_reference_content(); + if(typeof(is_reference) != "undefined") + { if(is_reference) $("#reference_form").slideDown(200); + } +} + +function add_derivation(id_source, id_source_derivation) +{ if(!id_source) + { index_derivation++; + id_source_derivation = index_derivation; + } + $.ajax + ( { url: mw_site_url + "index.php?e=content/sources/xml_form&id=" + id_source + "&derivation=" + id_source_derivation + "&form=" + (id_source ? "edit" : "add"), + dataType: "html", + success: function(content) + { $("#derivations_items").append(content); + init_toggle_edit_derivation_content(id_source_derivation); + $("#derivation_infos_" + id_source_derivation).slideDown(200); + } + } + ); +} + +function del_sml_xf(id_xf) +{ $("#" + id_xf).slideUp(200, function () { $(this).remove(); }); +} diff --git a/app/out/default/js/actions/users_groupes.js b/app/out/default/js/actions/users_groupes.js new file mode 100644 index 0000000..31a5f59 --- /dev/null +++ b/app/out/default/js/actions/users_groupes.js @@ -0,0 +1,28 @@ +$(document).ready( + function(){ + init_contact_form_ckeckbox(); + } +); + +function select_groupe(id_groupe){ + var content = + "" + + ""; + $("#album_select").html(content); +} + +function init_contact_form_ckeckbox(){ + $("#contact_form").click( + function(){ + if($(this).get(0).checked) $("#email_li").slideDown(200); + else $("#email_li").slideUp(200); + } + ); +} diff --git a/app/out/default/js/jquery-ui-1.8.12.custom.min.js b/app/out/default/js/jquery-ui-1.8.12.custom.min.js new file mode 100644 index 0000000..1b1c88f --- /dev/null +++ b/app/out/default/js/jquery-ui-1.8.12.custom.min.js @@ -0,0 +1,783 @@ +/*! + * jQuery UI 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.12",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106, +NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this, +"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position"); +if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,l,m){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(l)g-=parseFloat(c.curCSS(f, +"border"+this+"Width",true))||0;if(m)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h, +d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){var b=a.nodeName.toLowerCase(),d=c.attr(a,"tabindex");if("area"===b){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&k(a)}return(/input|select|textarea|button|object/.test(b)?!a.disabled:"a"==b?a.href||!isNaN(d):!isNaN(d))&&k(a)},tabbable:function(a){var b=c.attr(a,"tabindex");return(isNaN(b)||b>=0)&&c(a).is(":focusable")}}); +c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate); +if(this._mouseStarted){this._mouseStarted=false;a.target==this._mouseDownEvent.target&&b.data(a.target,this.widgetName+".preventClickEvent",true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); +;/* + * jQuery UI Position 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Position + */ +(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.setTimeout){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j={top:b.of.pageY, +left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/2;if(b.at[1]==="bottom")j.top+= +k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+(parseInt(c.curCSS(this,"marginRight",true))||0),w=m+q+(parseInt(c.curCSS(this,"marginBottom",true))||0),i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]==="center")i.top-= +m/2;i.left=Math.round(i.left);i.top=Math.round(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();b.left= +d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+= +a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b), +g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery); +;/* + * jQuery UI Draggable 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Draggables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper== +"original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b= +this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;return true},_mouseStart:function(a){var b=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top- +this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions(); +d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);return true},_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis|| +this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b=false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&& +this.options.revert.call(this.element,b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle||!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this== +a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone():this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]|| +0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0], +this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top- +(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(), +height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[(a.containment=="document"?0:d(window).scrollLeft())-this.offset.relative.left-this.offset.parent.left,(a.containment=="document"?0:d(window).scrollTop())-this.offset.relative.top-this.offset.parent.top,(a.containment=="document"?0:d(window).scrollLeft())+d(a.containment=="document"? +document:window).width()-this.helperProportions.width-this.margins.left,(a.containment=="document"?0:d(window).scrollTop())+(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){var b=d(a.containment)[0];if(b){a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"), +10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0),a.top+(parseInt(d(b).css("borderTopWidth"),10)||0)+(parseInt(d(b).css("paddingTop"),10)||0),a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"), +10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom]}}else if(a.containment.constructor==Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&& +d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0], +this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,g=a.pageY;if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.leftthis.containment[2])e=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g= +this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.topthis.containment[3])?g:!(g-this.offset.click.topthis.containment[2])? +e:!(e-this.offset.click.left').css({width:this.offsetWidth+ +"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")})},stop:function(){d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});d.ui.plugin.add("draggable","opacity",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("opacity"))b._opacity=a.css("opacity");a.css("opacity",b.opacity)},stop:function(a,b){a=d(this).data("draggable").options;a._opacity&&d(b.helper).css("opacity", +a._opacity)}});d.ui.plugin.add("draggable","scroll",{start:function(){var a=d(this).data("draggable");if(a.scrollParent[0]!=document&&a.scrollParent[0].tagName!="HTML")a.overflowOffset=a.scrollParent.offset()},drag:function(a){var b=d(this).data("draggable"),c=b.options,f=false;if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){if(!c.axis||c.axis!="x")if(b.overflowOffset.top+b.scrollParent[0].offsetHeight-a.pageY=0;h--){var i=c.snapElements[h].left,k=i+c.snapElements[h].width,j=c.snapElements[h].top,l=j+c.snapElements[h].height;if(i-e=j&&f<=l||h>=j&&h<=l||fl)&&(e>= +i&&e<=k||g>=i&&g<=k||ek);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(), +top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle= +this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!e(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne", +nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var d=0;d');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== +String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),k=0;k=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,k);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){e(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()}; +if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(), +d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset= +this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio: +this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis];if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize", +b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height; +f=f?0:c.sizeDiff.width;f={width:c.helper.width()-f,height:c.helper.height()-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f,{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing"); +this._propagate("stop",b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(l(b.left))this.position.left=b.left;if(l(b.top))this.position.top=b.top;if(l(b.height))this.size.height=b.height;if(l(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,d=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(d=="sw"){b.left=a.left+(c.width-b.width);b.top= +null}if(d=="nw"){b.top=a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,d=l(b.width)&&a.maxWidth&&a.maxWidthb.width,h=l(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+ +this.size.height,k=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&k)b.left=i-a.minWidth;if(d&&k)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b, +a){return{width:this.originalSize.width+a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a, +c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize, +originalPosition:this.originalPosition}}});e.extend(e.ui.resizable,{version:"1.8.12"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(),10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize= +b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize,function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top-f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var k=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:k.parents(a.originalElement[0]).length?["width","height"]:["width", +"height","top","left"];e.each(r,function(n,o){if((n=(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(k.css("position"))){c._revertToRelativePosition=true;k.css({position:"absolute",top:"auto",left:"auto"})}k.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType?e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})}; +if(b._revertToRelativePosition){b._revertToRelativePosition=false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a=e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height- +g};g=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing,step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width, +height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement=e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d= +e(a),f=[];e(["Top","Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset;var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options, +d=a.containerOffset,f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left:a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper? +d.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top-d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height= +a.size.width/a.aspectRatio}if(d+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition,f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&& +/static/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25,display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable"); +b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b=e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/ +(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},l=function(b){return!isNaN(parseInt(b,10))}})(jQuery); +;/* + * jQuery UI Selectable 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Selectables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"), +selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("
")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting", +c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var d= +this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){this.containerCache={};this.element.addClass("ui-sortable"); +this.refresh();this.floating=this.items.length?/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a==="disabled"){this.options[a]= +b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&&!b){var f=false; +d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem=c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left- +this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]}; +this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment();if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!= +document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start",a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a); +return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY=0;b--){c=this.items[b];var e=c.item[0],f=this._intersectsWithPointer(c);if(f)if(e!=this.currentItem[0]&&this.placeholder[f==1?"next":"prev"]()[0]!=e&&!d.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!d.ui.contains(this.element[0], +e):true)){this.direction=f==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(c))this._rearrange(a,c);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(a,b){if(a){d.ui.ddmanager&&!this.options.dropBehaviour&&d.ui.ddmanager.drop(this,a);if(this.options.revert){var c=this;b=c.placeholder.offset(); +c.reverting=true;d(this.helper).animate({left:b.left-this.offset.parent.left-c.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:b.top-this.offset.parent.top-c.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){c._clear(a)})}else this._clear(a,b);return false}},cancel:function(){var a=this;if(this.dragging){this._mouseUp({target:null});this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"): +this.currentItem.show();for(var b=this.containers.length-1;b>=0;b--){this.containers[b]._trigger("deactivate",null,a._uiHash(this));if(this.containers[b].containerCache.over){this.containers[b]._trigger("out",null,a._uiHash(this));this.containers[b].containerCache.over=0}}}if(this.placeholder){this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();d.extend(this,{helper:null, +dragging:false,reverting:false,_noFinalSort:null});this.domPosition.prev?d(this.domPosition.prev).after(this.currentItem):d(this.domPosition.parent).prepend(this.currentItem)}return this},serialize:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};d(b).each(function(){var e=(d(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);if(e)c.push((a.key||e[1]+"[]")+"="+(a.key&&a.expression?e[1]:e[2]))});!c.length&&a.key&&c.push(a.key+"=");return c.join("&")}, +toArray:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};b.each(function(){c.push(d(a.item||this).attr(a.attribute||"id")||"")});return c},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,e=this.positionAbs.top,f=e+this.helperProportions.height,g=a.left,h=g+a.width,i=a.top,k=i+a.height,j=this.offset.click.top,l=this.offset.click.left;j=e+j>i&&e+jg&&b+la[this.floating?"width":"height"]?j:g0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a);this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(a){var b=[],c=[],e=this._connectWith(); +if(e&&a)for(a=e.length-1;a>=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h=d.data(f[g],"sortable");if(h&&h!=this&&!h.options.disabled)c.push([d.isFunction(h.options.items)?h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), +this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)});return d(b)},_removeCurrentsFromItems:function(){for(var a=this.currentItem.find(":data(sortable-item)"),b=0;b=0;f--)for(var g=d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable");if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)?i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h=0;b--){var c=this.items[b];if(!(c.instance!=this.currentContainer&&this.currentContainer&&c.item[0]!=this.currentItem[0])){var e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b= +this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top=e.top;this.containers[b].containerCache.width=this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f= +d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!e)f.style.visibility="hidden";return f},update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")|| +0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b=null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out", +a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length===1){this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h- +f)this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g- +this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.topthis.containment[3])?g:!(g-this.offset.click.topthis.containment[2])?f:!(f-this.offset.click.left=0;e--)if(d.ui.contains(this.containers[e].element[0],this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive",g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this, +this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out",g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over=0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop", +a,this._uiHash());for(e=0;e li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix"); +a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom"); +if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var h=d.closest(".ui-accordion-header");a.active=h.length?h:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion", +function(f){return a._keydown(f)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(f){a._clickHandler.call(a,f,this);f.preventDefault()})},_createIcons:function(){var a= +this.options;if(a.icons){c("").addClass("ui-icon "+a.icons.header).prependTo(this.headers);this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex"); +this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons(); +b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,h=this.headers.index(a.target),f=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:f=this.headers[(h+1)%d];break;case b.LEFT:case b.UP:f=this.headers[(h-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target); +a.preventDefault()}if(f){c(a.target).attr("tabIndex",-1);c(f).attr("tabIndex",0);f.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+ +c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options; +if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){var h=this.active;j=a.next();g=this.active.next();e={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):j,oldContent:g};var f=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(j,g,e,b,f);h.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header); +if(!b){a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected);a.next().addClass("ui-accordion-content-active")}}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var g=this.active.next(), +e={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:g},j=this.active=c([]);this._toggle(j,g,e)}},_toggle:function(a,b,d,h,f){var g=this,e=g.options;g.toShow=a;g.toHide=b;g.data=d;var j=function(){if(g)return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data);g.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&h?{toShow:c([]),toHide:b,complete:j,down:f,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:f,autoHeight:e.autoHeight|| +e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;h=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!h[k]&&!c.easing[k])k="slide";h[k]||(h[k]=function(l){this.slide(l,{easing:k,duration:i||700})});h[k](d)}else{if(e.collapsible&&h)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false", +"aria-selected":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");if(this.toHide.length)this.toHide.parent()[0].className=this.toHide.parent()[0].className;this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.12", +animations:{slide:function(a,b){a=c.extend({easing:"swing",duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),h=0,f={},g={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){g[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/); +f[i]={value:j[1],unit:j[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(g,{step:function(j,i){if(i.prop=="height")h=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=h*f[i.prop].value+f[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide", +paddingTop:"hide",paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery); +;/* + * jQuery UI Autocomplete 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Autocomplete + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.position.js + */ +(function(d){var e=0;d.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:false,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var a=this,b=this.element[0].ownerDocument,g;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!(a.options.disabled||a.element.attr("readonly"))){g= +false;var f=d.ui.keyCode;switch(c.keyCode){case f.PAGE_UP:a._move("previousPage",c);break;case f.PAGE_DOWN:a._move("nextPage",c);break;case f.UP:a._move("previous",c);c.preventDefault();break;case f.DOWN:a._move("next",c);c.preventDefault();break;case f.ENTER:case f.NUMPAD_ENTER:if(a.menu.active){g=true;c.preventDefault()}case f.TAB:if(!a.menu.active)return;a.menu.select(c);break;case f.ESCAPE:a.element.val(a.term);a.close(c);break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){if(a.term!= +a.element.val()){a.selectedItem=null;a.search(null,c)}},a.options.delay);break}}}).bind("keypress.autocomplete",function(c){if(g){g=false;c.preventDefault()}}).bind("focus.autocomplete",function(){if(!a.options.disabled){a.selectedItem=null;a.previous=a.element.val()}}).bind("blur.autocomplete",function(c){if(!a.options.disabled){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)}});this._initSource();this.response=function(){return a._response.apply(a,arguments)}; +this.menu=d("
    ").addClass("ui-autocomplete").appendTo(d(this.options.appendTo||"body",b)[0]).mousedown(function(c){var f=a.menu.element[0];d(c.target).closest(".ui-menu-item").length||setTimeout(function(){d(document).one("mousedown",function(h){h.target!==a.element[0]&&h.target!==f&&!d.ui.contains(f,h.target)&&a.close()})},1);setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(c,f){f=f.item.data("item.autocomplete");false!==a._trigger("focus",c,{item:f})&&/^key/.test(c.originalEvent.type)&& +a.element.val(f.value)},selected:function(c,f){var h=f.item.data("item.autocomplete"),i=a.previous;if(a.element[0]!==b.activeElement){a.element.focus();a.previous=i;setTimeout(function(){a.previous=i;a.selectedItem=h},1)}false!==a._trigger("select",c,{item:h})&&a.element.val(h.value);a.term=a.element.val();a.close(c);a.selectedItem=h},blur:function(){a.menu.element.is(":visible")&&a.element.val()!==a.term&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu"); +d.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();d.Widget.prototype.destroy.call(this)},_setOption:function(a,b){d.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource();if(a==="appendTo")this.menu.element.appendTo(d(b||"body",this.element[0].ownerDocument)[0]);a==="disabled"&& +b&&this.xhr&&this.xhr.abort()},_initSource:function(){var a=this,b,g;if(d.isArray(this.options.source)){b=this.options.source;this.source=function(c,f){f(d.ui.autocomplete.filter(b,c.term))}}else if(typeof this.options.source==="string"){g=this.options.source;this.source=function(c,f){a.xhr&&a.xhr.abort();a.xhr=d.ajax({url:g,data:c,dataType:"json",autocompleteRequest:++e,success:function(h){this.autocompleteRequest===e&&f(h)},error:function(){this.autocompleteRequest===e&&f([])}})}}else this.source= +this.options.source},search:function(a,b){a=a!=null?a:this.element.val();this.term=this.element.val();if(a.length").data("item.autocomplete",b).append(d("").text(b.label)).appendTo(a)},_move:function(a,b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b);else this.search(null,b)},widget:function(){return this.menu.element}});d.extend(d.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, +"\\$&")},filter:function(a,b){var g=new RegExp(d.ui.autocomplete.escapeRegex(b),"i");return d.grep(a,function(c){return g.test(c.label||c.value||c)})}})})(jQuery); +(function(d){d.widget("ui.menu",{_create:function(){var e=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(a){if(d(a.target).closest(".ui-menu-item a").length){a.preventDefault();e.select(a)}});this.refresh()},refresh:function(){var e=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", +-1).mouseenter(function(a){e.activate(a,d(this).parent())}).mouseleave(function(){e.deactivate()})},activate:function(e,a){this.deactivate();if(this.hasScroll()){var b=a.offset().top-this.element.offset().top,g=this.element.attr("scrollTop"),c=this.element.height();if(b<0)this.element.attr("scrollTop",g+b);else b>=c&&this.element.attr("scrollTop",g+b-c+a.height())}this.active=a.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",e,{item:a})}, +deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id");this._trigger("blur");this.active=null}},next:function(e){this.move("next",".ui-menu-item:first",e)},previous:function(e){this.move("prev",".ui-menu-item:last",e)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(e,a,b){if(this.active){e=this.active[e+"All"](".ui-menu-item").eq(0); +e.length?this.activate(b,e):this.activate(b,this.element.children(a))}else this.activate(b,this.element.children(a))},nextPage:function(e){if(this.hasScroll())if(!this.active||this.last())this.activate(e,this.element.children(".ui-menu-item:first"));else{var a=this.active.offset().top,b=this.element.height(),g=this.element.children(".ui-menu-item").filter(function(){var c=d(this).offset().top-a-b+d(this).height();return c<10&&c>-10});g.length||(g=this.element.children(".ui-menu-item:last"));this.activate(e, +g)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(e){if(this.hasScroll())if(!this.active||this.first())this.activate(e,this.element.children(".ui-menu-item:last"));else{var a=this.active.offset().top,b=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var g=d(this).offset().top-a+b-d(this).height();return g<10&&g>-10});result.length||(result=this.element.children(".ui-menu-item:first")); +this.activate(e,result)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,f=d.primary&&d.secondary,e=[];if(d.primary||d.secondary){if(this.options.text)e.push("ui-button-text-icon"+(f?"s":d.primary?"-primary":"-secondary"));d.primary&&b.prepend("");d.secondary&&b.append("");if(!this.options.text){e.push(f?"ui-button-icons-only": +"ui-button-icon-only");this.hasTitle||b.attr("title",c)}}else e.push("ui-button-text-only");b.addClass(e.join(" "))}}});a.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()}, +destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery); +;/* + * jQuery UI Dialog 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.button.js + * jquery.ui.draggable.js + * jquery.ui.mouse.js + * jquery.ui.position.js + * jquery.ui.resizable.js + */ +(function(c,l){var m={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},n={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true},o=c.attrFn||{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true,click:true};c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false, +position:{my:"center",at:"center",collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
    ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+ +b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("
    ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g), +h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id", +e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"); +a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d,e;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!== +b.uiDialog[0]){e=c(this).css("z-index");isNaN(e)||(d=Math.max(d,e))}});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+= +1;d.uiDialog.css("z-index",c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target=== +f[0]&&e.shiftKey){g.focus(1);return false}}});c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,e=c("
    ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("
    ").addClass("ui-dialog-buttonset").appendTo(e);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a, +function(){return!(d=true)});if(d){c.each(a,function(f,h){h=c.isFunction(h)?{click:h,text:f}:h;var i=c('').click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.each(h,function(j,k){if(j!=="click")j in o?i[j](k):i.attr(j,k)});c.fn.button&&i.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close", +handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition, +originalSize:f.originalSize,position:f.position,size:f.size}}a=a===l?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize", +f,b(h))},stop:function(f,h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0],e;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "): +[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(g,f){if(+b[g]===b[g]){d[g]=b[g];b[g]=f}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(e=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(c.extend({of:window},a));e||this.uiDialog.hide()},_setOptions:function(a){var b=this,d={},e=false;c.each(a,function(g,f){b._setOption(g,f); +if(g in m)e=true;if(g in n)d[g]=f});e&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",d)},_setOption:function(a,b){var d=this,e=d.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"): +e.removeClass("ui-dialog-disabled");break;case "draggable":var g=e.is(":data(draggable)");g&&!b&&e.draggable("destroy");!g&&b&&d._makeDraggable();break;case "position":d._position(b);break;case "resizable":(g=e.is(":data(resizable)"))&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break}c.Widget.prototype._setOption.apply(d,arguments)},_size:function(){var a= +this.options,b,d,e=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();d=Math.max(0,a.minHeight-b);if(a.height==="auto")if(c.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();a=this.element.css("height","auto").height();e||this.uiDialog.hide();this.element.height(Math.max(a,d))}else this.element.height(Math.max(a.height- +b,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.12",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "), +create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), +height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){var b=c.inArray(a,this.instances);b!=-1&&this.oldInstances.push(this.instances.splice(b,1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var d=0;c.each(this.instances,function(){d=Math.max(d,this.css("z-index"))});this.maxZ=d},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight); +b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a");if(!a.values)a.values=[this._valueMin(),this._valueMin()];if(a.values.length&&a.values.length!==2)a.values=[a.values[0],a.values[0]]}else this.range=d("
    ");this.range.appendTo(this.element).addClass("ui-slider-range");if(a.range==="min"||a.range==="max")this.range.addClass("ui-slider-range-"+a.range);this.range.addClass("ui-widget-header")}d(".ui-slider-handle",this.element).length===0&&d("").appendTo(this.element).addClass("ui-slider-handle"); +if(a.values&&a.values.length)for(;d(".ui-slider-handle",this.element).length").appendTo(this.element).addClass("ui-slider-handle");this.handles=d(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(c){c.preventDefault()}).hover(function(){a.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(a.disabled)d(this).blur(); +else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(c){d(this).data("index.ui-slider-handle",c)});this.handles.keydown(function(c){var e=true,f=d(this).data("index.ui-slider-handle"),h,g,i;if(!b.options.disabled){switch(c.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:e= +false;if(!b._keySliding){b._keySliding=true;d(this).addClass("ui-state-active");h=b._start(c,f);if(h===false)return}break}i=b.options.step;h=b.options.values&&b.options.values.length?(g=b.values(f)):(g=b.value());switch(c.keyCode){case d.ui.keyCode.HOME:g=b._valueMin();break;case d.ui.keyCode.END:g=b._valueMax();break;case d.ui.keyCode.PAGE_UP:g=b._trimAlignValue(h+(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:g=b._trimAlignValue(h-(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(h=== +b._valueMax())return;g=b._trimAlignValue(h+i);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(h===b._valueMin())return;g=b._trimAlignValue(h-i);break}b._slide(c,f,g);return e}}).keyup(function(c){var e=d(this).data("index.ui-slider-handle");if(b._keySliding){b._keySliding=false;b._stop(c,e);b._change(c,e);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider"); +this._mouseDestroy();return this},_mouseCapture:function(b){var a=this.options,c,e,f,h,g;if(a.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:b.pageX,y:b.pageY});e=this._valueMax()-this._valueMin()+1;h=this;this.handles.each(function(i){var j=Math.abs(c-h.values(i));if(e>j){e=j;f=d(this);g=i}});if(a.range===true&&this.values(1)===a.min){g+=1;f=d(this.handles[g])}if(this._start(b, +g)===false)return false;this._mouseSliding=true;h._handleIndex=g;f.addClass("ui-state-active").focus();a=f.offset();this._clickOffset=!d(b.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:b.pageX-a.left-f.width()/2,top:b.pageY-a.top-f.height()/2-(parseInt(f.css("borderTopWidth"),10)||0)-(parseInt(f.css("borderBottomWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(b,g,c);return this._animateOff=true},_mouseStart:function(){return true}, +_mouseDrag:function(b){var a=this._normValueFromMouse({x:b.pageX,y:b.pageY});this._slide(b,this._handleIndex,a);return false},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(b){var a; +if(this.orientation==="horizontal"){a=this.elementSize.width;b=b.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{a=this.elementSize.height;b=b.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}a=b/a;if(a>1)a=1;if(a<0)a=0;if(this.orientation==="vertical")a=1-a;b=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+a*b)},_start:function(b,a){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value= +this.values(a);c.values=this.values()}return this._trigger("start",b,c)},_slide:function(b,a,c){var e;if(this.options.values&&this.options.values.length){e=this.values(a?0:1);if(this.options.values.length===2&&this.options.range===true&&(a===0&&c>e||a===1&&c1){this.options.values[b]=this._trimAlignValue(a);this._refreshValue();this._change(null,b)}else if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;e=arguments[0];for(f=0;f=this._valueMax())return this._valueMax();var a=this.options.step>0?this.options.step:1,c=(b-this._valueMin())%a;alignValue=b-c;if(Math.abs(c)*2>=a)alignValue+=c>0?a:-a;return parseFloat(alignValue.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max}, +_refreshValue:function(){var b=this.options.range,a=this.options,c=this,e=!this._animateOff?a.animate:false,f,h={},g,i,j,l;if(this.options.values&&this.options.values.length)this.handles.each(function(k){f=(c.values(k)-c._valueMin())/(c._valueMax()-c._valueMin())*100;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";d(this).stop(1,1)[e?"animate":"css"](h,a.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(k===0)c.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},a.animate); +if(k===1)c.range[e?"animate":"css"]({width:f-g+"%"},{queue:false,duration:a.animate})}else{if(k===0)c.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},a.animate);if(k===1)c.range[e?"animate":"css"]({height:f-g+"%"},{queue:false,duration:a.animate})}g=f});else{i=this.value();j=this._valueMin();l=this._valueMax();f=l!==j?(i-j)/(l-j)*100:0;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";this.handle.stop(1,1)[e?"animate":"css"](h,a.animate);if(b==="min"&&this.orientation==="horizontal")this.range.stop(1, +1)[e?"animate":"css"]({width:f+"%"},a.animate);if(b==="max"&&this.orientation==="horizontal")this.range[e?"animate":"css"]({width:100-f+"%"},{queue:false,duration:a.animate});if(b==="min"&&this.orientation==="vertical")this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},a.animate);if(b==="max"&&this.orientation==="vertical")this.range[e?"animate":"css"]({height:100-f+"%"},{queue:false,duration:a.animate})}}});d.extend(d.ui.slider,{version:"1.8.12"})})(jQuery); +;/* + * jQuery UI Tabs 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Tabs + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"
    ",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:"
  • #{label}
  • "},_create:function(){this._tabify(true)},_setOption:function(b,e){if(b=="selected")this.options.collapsible&& +e==this.options.selected||this.select(e);else{this.options[b]=e;this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[b].concat(d.makeArray(arguments)))},_ui:function(b,e){return{tab:b,panel:e,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b= +d(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(b){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var a=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var i=d(f).attr("href"),l=i.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]|| +(q=d("base")[0])&&l===q.href)){i=f.hash;f.href=i}if(h.test(i))a.panels=a.panels.add(a.element.find(a._sanitizeSelector(i)));else if(i&&i!=="#"){d.data(f,"href.tabs",i);d.data(f,"load.tabs",i.replace(/#.*$/,""));i=a._tabId(f);f.href="#"+i;f=a.element.find("#"+i);if(!f.length){f=d(c.panelTemplate).attr("id",i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else c.disabled.push(g)});if(b){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); +this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(a._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected= +this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); +if(c.selected>=0&&this.anchors.length){a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash)).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[c.selected],a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash))[0]))});this.load(c.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")); +this.element[c.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);b=0;for(var j;j=this.lis[b];b++)d(j)[d.inArray(b,c.disabled)!=-1&&!d(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+ +g)};this.lis.bind("mouseover.tabs",function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal", +function(){e(f,o);a._trigger("show",null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")}; +this.anchors.bind(c.event+".tabs",function(){var g=this,f=d(g).closest("li"),i=a.panels.filter(":not(.ui-tabs-hide)"),l=a.element.find(a._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a.panels.filter(":animated").length||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}c.selected=a.anchors.index(this);a.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected= +-1;c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){s(g,i)}).dequeue("tabs");this.blur();return false}else if(!i.length){c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this));this.blur();return false}c.cookie&&a._cookie(c.selected,c.cookie);if(l.length){i.length&&a.element.queue("tabs",function(){s(g,i)});a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier."; +d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){if(typeof b=="string")b=this.anchors.index(this.anchors.filter("[href$="+b+"]"));return b},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e= +d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});b.cookie&&this._cookie(null,b.cookie);return this},add:function(b, +e,a){if(a===p)a=this.anchors.length;var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,b).replace(/#\{label\}/g,e));b=!b.indexOf("#")?b.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var j=c.element.find("#"+b);j.length||(j=d(h.panelTemplate).attr("id",b).data("destroy.tabs",true));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);j.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]); +j.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");j.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(b){b=this._getIndex(b);var e=this.options,a=this.lis.eq(b).remove(),c=this.panels.eq(b).remove(); +if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(b+(b+1=b?--h:h});this._tabify();this._trigger("remove",null,this._ui(a.find("a")[0],c[0]));return this},enable:function(b){b=this._getIndex(b);var e=this.options;if(d.inArray(b,e.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=b});this._trigger("enable",null, +this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(b){b=this._getIndex(b);var e=this.options;if(b!=e.selected){this.lis.eq(b).addClass("ui-state-disabled");e.disabled.push(b);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b]))}return this},select:function(b){b=this._getIndex(b);if(b==-1)if(this.options.collapsible&&this.options.selected!=-1)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+".tabs");return this}, +load:function(b){b=this._getIndex(b);var e=this,a=this.options,c=this.anchors.eq(b)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(a.spinner){var j=d("span",c);j.data("label.tabs",j.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){e.element.find(e._sanitizeSelector(c.hash)).html(k);e._cleanup();a.cache&&d.data(c, +"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.error(k,n,b,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this}, +url:function(b,e){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.12"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(b,e){var a=this,c=this.options,h=a._rotate||(a._rotate=function(j){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=c.selected;a.select(++k')}function F(a,b){d.extend(a,b);for(var c in b)if(b[c]== +null||b[c]==A)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.12"}});var y=(new Date).getTime();d.extend(K.prototype,{markerClassName:"hasDatepicker",log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){F(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase(); +f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:d('
    ')}}, +_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&& +b.append.remove();if(c){b.append=d(''+c+"");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('').addClass(this._triggerClass).html(f== +""?c:d("").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;gh){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a, +c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b), +true);this._updateDatepicker(b);this._updateAlternate(b);b.dpDiv.show()}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=1;this._dialogInput=d('');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}F(a.settings,e||{}); +b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass); +this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup", +this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().removeClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs, +function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().addClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null: +f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;for(var b=0;b-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target); +if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a); +d.datepicker._curInst&&d.datepicker._curInst!=b&&d.datepicker._curInst.dpDiv.stop(true,true);var c=d.datepicker._get(b,"beforeShow");F(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-= +document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim"); +var f=d.datepicker._get(b,"duration"),h=function(){d.datepicker._datepickerShowing=true;var i=b.dpDiv.find("iframe.ui-datepicker-cover");if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst= +b}}},_updateDatepicker:function(a){var b=this,c=d.datepicker._getBorders(a.dpDiv);a.dpDiv.empty().append(this._generateHTML(a));var e=a.dpDiv.find("iframe.ui-datepicker-cover");e.length&&e.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()});a.dpDiv.find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout",function(){d(this).removeClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).removeClass("ui-datepicker-prev-hover"); +this.className.indexOf("ui-datepicker-next")!=-1&&d(this).removeClass("ui-datepicker-next-hover")}).bind("mouseover",function(){if(!b._isDisabledDatepicker(a.inline?a.dpDiv.parent()[0]:a.input[0])){d(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");d(this).addClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).addClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).addClass("ui-datepicker-next-hover")}}).end().find("."+ +this._dayOverClass+" a").trigger("mouseover").end();c=this._getNumberOfMonths(a);e=c[1];e>1?a.dpDiv.addClass("ui-datepicker-multi-"+e).css("width",17*e+"em"):a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");a.dpDiv[(c[0]!=1||c[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&& +a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var f=a.yearshtml;setTimeout(function(){f===a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);f=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth(): +0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a), +"isRTL");a&&(a.type=="hidden"||a.nodeType!=1||d.expr.filters.hidden(a));)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);this._curInst=null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"? +"fadeOut":"hide"](a?c:null,e);a||e();if(a=this._get(b,"onClose"))a.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(d.datepicker._curInst){a= +d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a= +d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear=false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c== +"M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b=this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear=!b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=d("a",e).html();f.selectedMonth=f.currentMonth= +b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);else{this._hideDatepicker(); +this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=a.getTime();a.setMonth(0); +a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;e=typeof e!="string"?e:(new Date).getFullYear()%100+parseInt(e,10);for(var f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c? +c.monthNames:null)||this._defaults.monthNames,j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=z+1-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}w=this._daylightSavingAdjust(new Date(c,j-1,l));if(w.getFullYear()!=c||w.getMonth()+1!=j||w.getDate()!=l)throw"Invalid date";return w},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y", +RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=k+112?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay= +a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(), +b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n= +this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&nn;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a));n=this._canAdjustMonth(a,-1,m,g)?''+n+"":f?"":''+n+"";var r=this._get(a,"nextText");r=!h?r:this.formatDate(r,this._daylightSavingAdjust(new Date(m,g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?''+r+"":f?"":''+r+"";j=this._get(a,"currentText");r=this._get(a,"gotoCurrent")&&a.currentDay?u:b;j=!h?j:this.formatDate(j,r,this._getFormatConfig(a));h=!a.inline?'":"";e=e?'
    '+(c?h:"")+(this._isInRange(a,r)?'":"")+(c?"":h)+"
    ":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");r=this._get(a,"dayNames");this._get(a,"dayNamesShort");var s=this._get(a,"dayNamesMin"),z= +this._get(a,"monthNames"),w=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),v=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var L=this._getDefaultDate(a),I="",D=0;D1)switch(E){case 0:x+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]- +1:x+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:x+=" ui-datepicker-group-middle";t="";break}x+='">'}x+='
    '+(/all|left/.test(t)&&D==0?c?f:n:"")+(/all|right/.test(t)&&D==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,D>0||E>0,z,w)+'
    ';var B=j?'":"";for(t=0;t<7;t++){var q= +(t+h)%7;B+="=5?' class="ui-datepicker-week-end"':"")+'>'+s[q]+""}x+=B+"";B=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,B);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;B=l?6:Math.ceil((t+B)/7);q=this._daylightSavingAdjust(new Date(m,g,1-t));for(var O=0;O";var P=!j?"":'";for(t=0;t<7;t++){var G= +p?p.apply(a.input?a.input[0]:null,[q]):[true,""],C=q.getMonth()!=g,J=C&&!H||!G[0]||k&&qo;P+='";q.setDate(q.getDate()+1);q=this._daylightSavingAdjust(q)}x+= +P+""}g++;if(g>11){g=0;m++}x+="
    '+this._get(a,"weekHeader")+"
    '+this._get(a,"calculateWeek")(q)+""+(C&&!v?" ":J?''+q.getDate()+"":''+q.getDate()+"")+"
    "+(l?""+(i[0]>0&&E==i[1]-1?'
    ':""):"");M+=x}I+=M}I+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'':"");a._keyEvent=false;return I},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='
    ', +o="";if(h||!j)o+=''+i[b]+"";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='"}u||(k+=o+(h||!(j&& +l)?" ":""));if(!a.yearshtml){a.yearshtml="";if(h||!l)k+=''+c+"";else{g=this._get(a,"yearRange").split(":");var r=(new Date).getFullYear();i=function(s){s=s.match(/c[+-].*/)?c+parseInt(s.substring(1),10):s.match(/[+-].*/)?r+parseInt(s,10):parseInt(s,10);return isNaN(s)?r:s};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(a.yearshtml+='";if(d.browser.mozilla)k+='";else{k+=a.yearshtml;a.yearshtml=null}}}k+=this._get(a,"yearSuffix");if(u)k+=(h||!(j&&l)?" ":"")+o;k+="
    ";return k},_adjustInstDate:function(a,b,c){var e= +a.drawYear+(c=="Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&ba?a:b},_notifyChange:function(a){var b=this._get(a, +"onChangeMonthYear");if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a); +c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a, +"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker= +function(a){if(!this.length)return this;if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker, +[this[0]].concat(b));return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new K;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.12";window["DP_jQuery_"+y]=d})(jQuery); +;/* + * jQuery UI Progressbar 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Progressbar + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function(b,d){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("
    ").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); +this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===d)return this._value();this._setOption("value",a);return this},_setOption:function(a,c){if(a==="value"){this.options.value=c;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100* +this._value()/this.options.max},_refreshValue:function(){var a=this.value(),c=this._percentage();if(this.oldValue!==a){this.oldValue=a;this._trigger("change")}this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(c.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.12"})})(jQuery); +;/* + * jQuery UI Effects 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/ + */ +jQuery.effects||function(f,j){function n(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1], +16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return o.transparent;return o[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return n(b)}function p(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle, +a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function q(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d= +a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function m(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor", +"borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=n(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var o={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0, +0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211, +211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},r=["add","remove","toggle"],t={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b, +d){if(f.isFunction(b)){d=b;b=null}return this.queue("fx",function(){var e=f(this),g=e.attr("style")||" ",h=q(p.call(this)),l,v=e.attr("className");f.each(r,function(w,i){c[i]&&e[i+"Class"](c[i])});l=q(p.call(this));e.attr("className",v);e.animate(u(h,l),a,b,function(){f.each(r,function(w,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments)});h=f.queue(this);l=h.splice(h.length-1,1)[0]; +h.splice(1,0,l);f.dequeue(this)})};f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c, +a):f.effects.animateClass.apply(this,[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.12",save:function(c,a){for(var b=0;b").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent", +border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"});c.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c); +return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)});return d.call(this,b)},_show:f.fn.show,show:function(c){if(m(c))return this._show.apply(this,arguments); +else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(m(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(m(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c), +b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c, +a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c, +a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a== +e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+ +e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery); +;/* + * jQuery UI Effects Fade 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Fade + * + * Depends: + * jquery.effects.core.js + */ +(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); +;/* + * jQuery UI Effects Fold 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Fold + * + * Depends: + * jquery.effects.core.js + */ +(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","bottom","left","right"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1], +10)/100*f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery); +;/* + * jQuery UI Effects Highlight 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Highlight + * + * Depends: + * jquery.effects.core.js + */ +(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&& +this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); +;/* + * jQuery UI Effects Pulsate 1.8.12 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Pulsate + * + * Depends: + * jquery.effects.core.js + */ +(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments); +b.dequeue()})})}})(jQuery); +; \ No newline at end of file diff --git a/app/out/default/js/jquery.colorbox-min.js b/app/out/default/js/jquery.colorbox-min.js new file mode 100644 index 0000000..b795ee8 --- /dev/null +++ b/app/out/default/js/jquery.colorbox-min.js @@ -0,0 +1,4 @@ +// ColorBox v1.3.16 - a full featured, light-weight, customizable lightbox based on jQuery 1.3+ +// Copyright (c) 2011 Jack Moore - jack@colorpowered.com +// Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php +(function(a,b,c){function ba(b){if(!T){O=b,Z(a.extend(J,a.data(O,e))),x=a(O),P=0,J.rel!=="nofollow"&&(x=a("."+V).filter(function(){var b=a.data(this,e).rel||this.rel;return b===J.rel}),P=x.index(O),P===-1&&(x=x.add(O),P=x.length-1));if(!R){R=S=!0,q.show();if(J.returnFocus)try{O.blur(),a(O).one(k,function(){try{this.focus()}catch(a){}})}catch(c){}p.css({opacity:+J.opacity,cursor:J.overlayClose?"pointer":"auto"}).show(),J.w=X(J.initialWidth,"x"),J.h=X(J.initialHeight,"y"),U.position(0),n&&y.bind("resize."+o+" scroll."+o,function(){p.css({width:y.width(),height:y.height(),top:y.scrollTop(),left:y.scrollLeft()})}).trigger("resize."+o),$(g,J.onOpen),I.add(C).hide(),H.html(J.close).show()}U.load(!0)}}function _(){var a,b=f+"Slideshow_",c="click."+f,d,e,g;J.slideshow&&x[1]&&(d=function(){E.text(J.slideshowStop).unbind(c).bind(i,function(){if(P"),b.open=!0;f.each(function(){a.data(this,e,a.extend({},a.data(this,e)||d,b)),a(this).addClass(V)}),g=b.open,a.isFunction(g)&&(g=g.call(f)),g&&ba(f[0]);return f},U.init=function(){y=a(c),q=W().attr({id:e,"class":m?f+(n?"IE6":"IE"):""}),p=W("Overlay",n?"position:absolute":"").hide(),r=W("Wrapper"),s=W("Content").append(z=W("LoadedContent","width:0; height:0; overflow:hidden"),B=W("LoadingOverlay").add(W("LoadingGraphic")),C=W("Title"),D=W("Current"),F=W("Next"),G=W("Previous"),E=W("Slideshow").bind(g,_),H=W("Close")),r.append(W().append(W("TopLeft"),t=W("TopCenter"),W("TopRight")),W(!1,"clear:left").append(u=W("MiddleLeft"),s,v=W("MiddleRight")),W(!1,"clear:left").append(W("BottomLeft"),w=W("BottomCenter"),W("BottomRight"))).children().children().css({"float":"left"}),A=W(!1,"position:absolute; width:9999px; visibility:hidden; display:none"),a("body").prepend(p,q.append(r,A)),s.children().hover(function(){a(this).addClass("hover")},function(){a(this).removeClass("hover")}).addClass("hover"),K=t.height()+w.height()+s.outerHeight(!0)-s.height(),L=u.width()+v.width()+s.outerWidth(!0)-s.width(),M=z.outerHeight(!0),N=z.outerWidth(!0),q.css({"padding-bottom":K,"padding-right":L}).hide(),F.click(function(){U.next()}),G.click(function(){U.prev()}),H.click(function(){U.close()}),I=F.add(G).add(D).add(E),s.children().removeClass("hover"),a("."+V).live("click",function(a){a.button!==0&&typeof a.button!="undefined"||a.ctrlKey||a.shiftKey||a.altKey||(a.preventDefault(),ba(this))}),p.click(function(){J.overlayClose&&U.close()}),a(b).bind("keydown."+f,function(a){var b=a.keyCode;R&&J.escKey&&b===27&&(a.preventDefault(),U.close()),R&&J.arrowKey&&x[1]&&(b===37?(a.preventDefault(),G.click()):b===39&&(a.preventDefault(),F.click()))})},U.remove=function(){q.add(p).remove(),a("."+V).die("click").removeData(e).removeClass(V)},U.position=function(a,c){function g(a){t[0].style.width=w[0].style.width=s[0].style.width=a.style.width,B[0].style.height=B[1].style.height=s[0].style.height=u[0].style.height=v[0].style.height=a.style.height}var d,e=Math.max(b.documentElement.clientHeight-J.h-M-K,0)/2+y.scrollTop(),f=Math.max(y.width()-J.w-N-L,0)/2+y.scrollLeft();d=q.width()===J.w+N&&q.height()===J.h+M?0:a,r[0].style.width=r[0].style.height="9999px",q.dequeue().animate({width:J.w+N,height:J.h+M,top:e,left:f},{duration:d,complete:function(){g(this),S=!1,r[0].style.width=J.w+N+L+"px",r[0].style.height=J.h+M+K+"px",c&&c()},step:function(){g(this)}})},U.resize=function(a){if(R){a=a||{},a.width&&(J.w=X(a.width,"x")-N-L),a.innerWidth&&(J.w=X(a.innerWidth,"x")),z.css({width:J.w}),a.height&&(J.h=X(a.height,"y")-M-K),a.innerHeight&&(J.h=X(a.innerHeight,"y"));if(!a.innerHeight&&!a.height){var b=z.wrapInner("
    ").children();J.h=b.height(),b.replaceWith(b.children())}z.css({height:J.h}),U.position(J.transition==="none"?0:J.speed)}},U.prep=function(b){function h(b){U.position(b,function(){var b,d,g,h,j=x.length,k,n;!R||(n=function(){B.hide(),$(i,J.onComplete)},m&&Q&&z.fadeIn(100),C.html(J.title).add(z).show(),j>1?(typeof J.current=="string"&&D.html(J.current.replace(/\{current\}/,P+1).replace(/\{total\}/,j)).show(),F[J.loop||P")[0].src=h),Y(d)&&(a("")[0].src=d))):I.hide(),J.iframe?(k=a("