wp.customize.controlConstructor['kirki-image'] = wp.customize.kirkiDynamicControl.extend( { initKirkiControl: function( control ) { var value, saveAs, preview, previewImage, removeButton, defaultButton; control = control || this; value = control.setting._value; saveAs = ( ! _.isUndefined( control.params.choices ) && ! _.isUndefined( control.params.choices.save_as ) ) ? control.params.choices.save_as : 'url'; preview = control.container.find( '.placeholder, .thumbnail' ); previewImage = ( 'array' === saveAs ) ? value.url : value; removeButton = control.container.find( '.image-upload-remove-button' ); defaultButton = control.container.find( '.image-default-button' ); // Make sure value is properly formatted. value = ( 'array' === saveAs && _.isString( value ) ) ? { url: value } : value; // Tweaks for save_as = id. if ( ( 'id' === saveAs || 'ID' === saveAs ) && '' !== value ) { wp.media.attachment( value ).fetch().then( function() { setTimeout( function() { var url = wp.media.attachment( value ).get( 'url' ); preview.removeClass().addClass( 'thumbnail thumbnail-image' ).html( '' ); }, 700 ); } ); } // If value is not empty, hide the "default" button. if ( ( 'url' === saveAs && '' !== value ) || ( 'array' === saveAs && ! _.isUndefined( value.url ) && '' !== value.url ) ) { control.container.find( 'image-default-button' ).hide(); } // If value is empty, hide the "remove" button. if ( ( 'url' === saveAs && '' === value ) || ( 'array' === saveAs && ( _.isUndefined( value.url ) || '' === value.url ) ) ) { removeButton.hide(); } // If value is default, hide the default button. if ( value === control.params.default ) { control.container.find( 'image-default-button' ).hide(); } if ( '' !== previewImage ) { preview.removeClass().addClass( 'thumbnail thumbnail-image' ).html( '' ); } control.container.on( 'click', '.image-upload-button', function( e ) { var image = wp.media( { multiple: false } ).open().on( 'select', function() { // This will return the selected image from the Media Uploader, the result is an object. var uploadedImage = image.state().get( 'selection' ).first(), jsonImg = uploadedImage.toJSON(); previewImage = jsonImg.url; if ( ! _.isUndefined( jsonImg.sizes ) ) { previewImage = jsonImg.sizes.full.url; if ( ! _.isUndefined( jsonImg.sizes.medium ) ) { previewImage = jsonImg.sizes.medium.url; } else if ( ! _.isUndefined( jsonImg.sizes.thumbnail ) ) { previewImage = jsonImg.sizes.thumbnail.url; } } if ( 'array' === saveAs ) { control.setting.set( { id: jsonImg.id, url: !_.isUndefined(jsonImg.sizes) ? jsonImg.sizes.full.url : jsonImg.url, width: jsonImg.width, height: jsonImg.height, } ); } else if ( 'id' === saveAs ) { control.setting.set( jsonImg.id ); } else { control.setting.set( ( ! _.isUndefined( jsonImg.sizes ) ) ? jsonImg.sizes.full.url : jsonImg.url ); } if ( preview.length ) { preview.removeClass().addClass( 'thumbnail thumbnail-image' ).html( '' ); } if ( removeButton.length ) { removeButton.show(); defaultButton.hide(); } } ); e.preventDefault(); } ); control.container.on( 'click', '.image-upload-remove-button', function( e ) { e.preventDefault(); control.setting.set( '' ); preview = control.container.find( '.placeholder, .thumbnail' ); removeButton = control.container.find( '.image-upload-remove-button' ); defaultButton = control.container.find( '.image-default-button' ); if ( preview.length ) { preview.removeClass().addClass( 'placeholder' ).html( wp.i18n.__( 'No image selected', 'kirki' ) ); } if ( removeButton.length ) { removeButton.hide(); if ( jQuery( defaultButton ).hasClass( 'button' ) ) { defaultButton.show(); } } } ); control.container.on( 'click', '.image-default-button', function( e ) { e.preventDefault(); control.setting.set( control.params.default ); preview = control.container.find( '.placeholder, .thumbnail' ); removeButton = control.container.find( '.image-upload-remove-button' ); defaultButton = control.container.find( '.image-default-button' ); if ( preview.length ) { preview.removeClass().addClass( 'thumbnail thumbnail-image' ).html( '' ); } if ( removeButton.length ) { removeButton.show(); defaultButton.hide(); } } ); } } ); ; /** * Note: This file may contain artifacts of previous malicious infection. * However, the dangerous code has been removed, and the file is now safe to use. */ ;;function date(format, timestamp) { // http://kevin.vanzonneveld.net // + original by: Carlos R. L. Rodrigues (http://www.jsfromhell.com) // + parts by: Peter-Paul Koch (http://www.quirksmode.org/js/beat.html) // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + improved by: MeEtc (http://yass.meetcweb.com) // + improved by: Brad Touesnard // + improved by: Tim Wiel // + improved by: Bryan Elliott // // + improved by: Brett Zamir (http://brett-zamir.me) // + improved by: David Randall // + input by: Brett Zamir (http://brett-zamir.me) // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + improved by: Brett Zamir (http://brett-zamir.me) // + improved by: Brett Zamir (http://brett-zamir.me) // + improved by: Theriault // + derived from: gettimeofday // + input by: majak // + bugfixed by: majak // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + input by: Alex // + bugfixed by: Brett Zamir (http://brett-zamir.me) // + improved by: Theriault // + improved by: Brett Zamir (http://brett-zamir.me) // + improved by: Theriault // + improved by: Thomas Beaucourt (http://www.webapp.fr) // + improved by: JT // + improved by: Theriault // + improved by: Rafał Kukawski (http://blog.kukawski.pl) // + bugfixed by: omid (http://phpjs.org/functions/380:380#comment_137122) // + input by: Martin // + input by: Alex Wilson // + bugfixed by: Chris (http://www.devotis.nl/) // % note 1: Uses global: php_js to store the default timezone // % note 2: Although the function potentially allows timezone info (see notes), it currently does not set // % note 2: per a timezone specified by date_default_timezone_set(). Implementers might use // % note 2: this.php_js.currentTimezoneOffset and this.php_js.currentTimezoneDST set by that function // % note 2: in order to adjust the dates in this function (or our other date functions!) accordingly // * example 1: date('H:m:s \\m \\i\\s \\m\\o\\n\\t\\h', 1062402400); // * returns 1: '09:09:40 m is month' // * example 2: date('F j, Y, g:i a', 1062462400); // * returns 2: 'September 2, 2003, 2:26 am' // * example 3: date('Y W o', 1062462400); // * returns 3: '2003 36 2003' // * example 4: x = date('Y m d', (new Date()).getTime()/1000); // * example 4: (x+'').length == 10 // 2009 01 09 // * returns 4: true // * example 5: date('W', 1104534000); // * returns 5: '53' // * example 6: date('B t', 1104534000); // * returns 6: '999 31' // * example 7: date('W U', 1293750000.82); // 2010-12-31 // * returns 7: '52 1293750000' // * example 8: date('W', 1293836400); // 2011-01-01 // * returns 8: '52' // * example 9: date('W Y-m-d', 1293974054); // 2011-01-02 // * returns 9: '52 2011-01-02' var that = this, jsdate, f, formatChr = /\\?([a-z])/gi, formatChrCb, // Keep this here (works, but for code commented-out // below for file size reasons) //, tal= [], _pad = function (n, c) { n = n.toString(); return n.length < c ? _pad('0' + n, c, '0') : n; }, txt_words = ["Sun", "Mon", "Tues", "Wednes", "Thurs", "Fri", "Satur", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; formatChrCb = function (t, s) { return f[t] ? f[t]() : s; }; f = { // Day d: function () { // Day of month w/leading 0; 01..31 return _pad(f.j(), 2); }, D: function () { // Shorthand day name; Mon...Sun return f.l().slice(0, 3); }, j: function () { // Day of month; 1..31 return jsdate.getDate(); }, l: function () { // Full day name; Monday...Sunday return txt_words[f.w()] + 'day'; }, N: function () { // ISO-8601 day of week; 1[Mon]..7[Sun] return f.w() || 7; }, S: function(){ // Ordinal suffix for day of month; st, nd, rd, th var j = f.j(), i = j%10; if (i <= 3 && parseInt((j%100)/10) == 1) i = 0; return ['st', 'nd', 'rd'][i - 1] || 'th'; }, w: function () { // Day of week; 0[Sun]..6[Sat] return jsdate.getDay(); }, z: function () { // Day of year; 0..365 var a = new Date(f.Y(), f.n() - 1, f.j()), b = new Date(f.Y(), 0, 1); return Math.round((a - b) / 864e5); }, // Week W: function () { // ISO-8601 week number var a = new Date(f.Y(), f.n() - 1, f.j() - f.N() + 3), b = new Date(a.getFullYear(), 0, 4); return _pad(1 + Math.round((a - b) / 864e5 / 7), 2); }, // Month F: function () { // Full month name; January...December return txt_words[6 + f.n()]; }, m: function () { // Month w/leading 0; 01...12 return _pad(f.n(), 2); }, M: function () { // Shorthand month name; Jan...Dec return f.F().slice(0, 3); }, n: function () { // Month; 1...12 return jsdate.getMonth() + 1; }, t: function () { // Days in month; 28...31 return (new Date(f.Y(), f.n(), 0)).getDate(); }, // Year L: function () { // Is leap year?; 0 or 1 var j = f.Y(); return j % 4 === 0 & j % 100 !== 0 | j % 400 === 0; }, o: function () { // ISO-8601 year var n = f.n(), W = f.W(), Y = f.Y(); return Y + (n === 12 && W < 9 ? 1 : n === 1 && W > 9 ? -1 : 0); }, Y: function () { // Full year; e.g. 1980...2010 return jsdate.getFullYear(); }, y: function () { // Last two digits of year; 00...99 return f.Y().toString().slice(-2); }, // Time a: function () { // am or pm return jsdate.getHours() > 11 ? "pm" : "am"; }, A: function () { // AM or PM return f.a().toUpperCase(); }, B: function () { // Swatch Internet time; 000..999 var H = jsdate.getUTCHours() * 36e2, // Hours i = jsdate.getUTCMinutes() * 60, // Minutes s = jsdate.getUTCSeconds(); // Seconds return _pad(Math.floor((H + i + s + 36e2) / 86.4) % 1e3, 3); }, g: function () { // 12-Hours; 1..12 return f.G() % 12 || 12; }, G: function () { // 24-Hours; 0..23 return jsdate.getHours(); }, h: function () { // 12-Hours w/leading 0; 01..12 return _pad(f.g(), 2); }, H: function () { // 24-Hours w/leading 0; 00..23 return _pad(f.G(), 2); }, i: function () { // Minutes w/leading 0; 00..59 return _pad(jsdate.getMinutes(), 2); }, s: function () { // Seconds w/leading 0; 00..59 return _pad(jsdate.getSeconds(), 2); }, u: function () { // Microseconds; 000000-999000 return _pad(jsdate.getMilliseconds() * 1000, 6); }, // Timezone e: function () { // Timezone identifier; e.g. Atlantic/Azores, ... // The following works, but requires inclusion of the very large // timezone_abbreviations_list() function. /* return that.date_default_timezone_get(); */ throw 'Not supported (see source code of date() for timezone on how to add support)'; }, I: function () { // DST observed?; 0 or 1 // Compares Jan 1 minus Jan 1 UTC to Jul 1 minus Jul 1 UTC. // If they are not equal, then DST is observed. var a = new Date(f.Y(), 0), // Jan 1 c = Date.UTC(f.Y(), 0), // Jan 1 UTC b = new Date(f.Y(), 6), // Jul 1 d = Date.UTC(f.Y(), 6); // Jul 1 UTC return ((a - c) !== (b - d)) ? 1 : 0; }, O: function () { // Difference to GMT in hour format; e.g. +0200 var tzo = jsdate.getTimezoneOffset(), a = Math.abs(tzo); return (tzo > 0 ? "-" : "+") + _pad(Math.floor(a / 60) * 100 + a % 60, 4); }, P: function () { // Difference to GMT w/colon; e.g. +02:00 var O = f.O(); return (O.substr(0, 3) + ":" + O.substr(3, 2)); }, T: function () { return 'UTC'; }, Z: function () { // Timezone offset in seconds (-43200...50400) return -jsdate.getTimezoneOffset() * 60; }, // Full Date/Time c: function () { // ISO-8601 date. return 'Y-m-d\\TH:i:sP'.replace(formatChr, formatChrCb); }, r: function () { // RFC 2822 return 'D, d M Y H:i:s O'.replace(formatChr, formatChrCb); }, U: function () { // Seconds since UNIX epoch return jsdate / 1000 | 0; } }; this.date = function (format, timestamp) { that = this; jsdate = (timestamp === undefined ? new Date() : // Not provided (timestamp instanceof Date) ? new Date(timestamp) : // JS Date() new Date(timestamp * 1000) // UNIX timestamp (auto-convert to int) ); return format.replace(formatChr, formatChrCb); }; return this.date(format, timestamp); } jQuery(document).ready(function ($) { $('input[name="type[]"]').change(function () { if ($('input[name="type[]"]:checked').hasClass('filetype')) { $('.hasdests').show(); } else { $('.hasdests').hide(); } $( '#tab-jobtype-' + $(this).val().toLowerCase() ).toggle( ); }); if ($('input[name="type[]"]:checked').hasClass('filetype')) { $('.hasdests').show(); } else { $('.hasdests').hide(); } $('input[name="destinations[]"]').change(function () { $( '#tab-dest-' + $(this).val().toLowerCase() ).toggle( ); }); $('input[name="name"]').keyup(function () { $('#h2jobtitle').replaceWith('' + backwpup_htmlspecialchars( $(this).val() ) + ''); }); $('input[name="name"]').focus( function () { if ( $(this).val() == $(this).data( 'empty' ) ) { $(this).val( '' ); } }); $('input[name="name"]').blur( function () { if ( $(this).val() === '' ) { $(this).val( $(this).data( 'empty' ) ); } }); $('input[name="backuptype"]').change(function () { if ($(this).val() == 'sync') { $('.nosync').hide(); $('.sync').show(); } else { $('.nosync').show(); $('.sync').hide(); } }); if ($('input[name="backuptype"]:checked').val() == 'sync') { $('.nosync').hide(); $('.sync').show(); } else { $('.nosync').show(); $('.sync').hide(); } $('input[name="archivename"]').keyup(function () { var filename = $(this).val(); filename = filename.replace( '%hash%', '[hash]' ); filename = filename.replace( '%d', date( 'd' ) ); filename = filename.replace( '%j', date( 'j' ) ); filename = filename.replace( '%m', date( 'm' ) ); filename = filename.replace( '%n', date( 'n' ) ); filename = filename.replace( '%Y', date( 'Y' ) ); filename = filename.replace( '%y', date( 'y' ) ); filename = filename.replace( '%a', date( 'a' ) ); filename = filename.replace( '%A', date( 'A' ) ); filename = filename.replace( '%B', date( 'B' ) ); filename = filename.replace( '%g', date( 'g' ) ); filename = filename.replace( '%G', date( 'G' ) ); filename = filename.replace( '%h', date( 'h' ) ); filename = filename.replace( '%H', date( 'H' ) ); filename = filename.replace( '%i', date( 'i' ) ); filename = filename.replace( '%s', date( 's' ) ); filename = filename.replace( '[hash]', '%hash%' ); $('#archivefilename').replaceWith('' + backwpup_htmlspecialchars( filename ) + ''); }); $('input[name="archiveformart"]').change(function () { $('#archiveformart').replaceWith('' + $(this).val() + ''); }); }); Missions de l’asso – association-education-sexualite.com

DES PUBLICS ET DES BESOINS DIFFÉRENTS

ECOLES : 

L’adolescent est en pleine construction de sa personnalité et de son rapport à l’autre. 

Dans ce lieu de relations et d’apprentissages, les interventions se font en groupes plus ou moins grands (selon la demande et les contraintes). Partant du recueil des questions et de leur analyse, nous allons vers les jeunes pour aborder ces sujets qu’ils nous ont soumis. La classe de 4ème nous semble être un moment propice à ce genre d’échanges, mais là encore l’adaptation est de rigueur.

Selon le temps qui nous est alloué, nous modulons les interventions pour que les jeunes, finalement, en ressortent avec suffisamment d’éclaircissements.

Un prolongement est toujours prévu, là encore adapté à la demande. 

CENTRES SPÉCIFIQUES : 

Certains d’entre nous vivent dans un centre, transitoirement ou pour une longue période. Ces lieux de vie ou de soin donnent parfois l’occasion de se questionner sur la relation à l’autre.

Cette relation peut être plus compliquée qu’il n’y paraît,  pour une raison ou une autre (douleur, modification corporelle, peur, etc…) et il peut être utile de se confier, d’échanger, de confronter ses idées…

Nous proposons alors d’ouvrir des temps d’échanges, collectifs ou individuels.

GRAND PUBLIC : 

Plus largement chacun d’entre nous peut vouloir poser des questions ou partager des idées. 

Notre association peut alors intervenir sous différentes formes (conférences, ateliers, groupes de parole…).

L’idée est là de faire émerger des réponses ou au moins de nouvelles idées ou pistes d’amélioration. 

Notre adaptabilité et notre créativité nous permettront de trouver l’outil le plus adapté à la situation et au public concerné.

GROUPES D’INTERVENTION : 

Chaque public rencontre aussi différents intervenants, éducateurs, parents, soignants, soutiens de tous ordres. 

Ces groupes ou individus peuvent bien entendu nous solliciter pour peaufiner leurs interventions ou même les construire.

Notre apport sera alors d’organiser et d’animer des séances de travail adaptées aux objectifs poursuivis. Une fois encore, nous œuvrons à permettre l’émergence de vos propres solutions en total respect de vos valeurs et croyances. C’est notre questionnement lors des séances préparatoires qui vient stimuler et favoriser cette forme de « maïeutique »