AnonSec Shell
Server IP : 54.36.91.62  /  Your IP : 216.73.217.94
Web Server : Apache
System : Linux webm013.cluster127.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64
User : coopiak ( 151928)
PHP Version : 8.3.23
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/coopiak/amisdesseniors-fr/components/com_community/assets/postbox/js/views/postbox/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/coopiak/amisdesseniors-fr/components/com_community/assets/postbox/js/views/postbox/photo.js
define('views/postbox/photo',[
    'sandbox',
    'app',
    'views/postbox/default',
    'views/postbox/photo-preview',
    'views/postbox/gif-preview',
    'views/inputbox/photo',
    'views/dropdown/mood',
    'views/widget/select',
    'utils/constants',
    'utils/language',
    'utils/uploader'
],

// definition
// ----------
function(
    $,
    App,
    DefaultView,
    PreviewView,
    GifPreviewView,
    InputboxView,
    MoodView,
    SelectWidget,
    constants,
    language,
    Uploader
) {

    return DefaultView.extend({

        subviews: {
            mood: MoodView
        },

        template: joms.jst[ 'html/postbox/photo' ],

        events: $.extend({}, DefaultView.prototype.events, {
            'click .joms-postbox-photo-upload': 'onPhotoAdd',
            'click li[data-tab=upload]': 'onPhotoAdd',
            'click .joms-postbox-gif-upload': 'onGifAdd',
            'dragenter': 'onDragEnter',
            'dragleave #joms-postbox-photo--droparea': 'onDragLeave',
            'drop #joms-postbox-photo--droparea': 'onFileDrop'
        }),

        initialize: function() {
            var moods = constants.get('moods');
            this.enableMood = +constants.get('conf.enablemood') && moods && moods.length;
            if ( !this.enableMood )
                this.subviews = $.omit( this.subviews, 'mood' );

            this.enableGif = +constants.get('conf.enablephotosgif');
            
            DefaultView.prototype.initialize.apply( this );
        },

        render: function() {
            DefaultView.prototype.render.apply( this );
            this.$el.find(".joms-icon--emoticon").data('editor', this);
            this.$initial = this.$('.joms-postbox-inner-panel');
            this.$main = this.$('.joms-postbox-photo');

            this.$inputbox = this.$('.joms-postbox-inputbox');
            this.$preview = this.$('.joms-postbox-preview');
            this.$tabupload = this.$tabs.find('[data-tab=upload]');
            this.$tabmood = this.$tabs.find('[data-tab=mood]');

            this.$dropArea = this.$el.find('#joms-postbox-photo--droparea');

            if ( !this.enableMood )
                this.$tabmood.remove();

            this.$uploader = this.$('#joms-postbox-photo-upload');
            this.$uploaderParent = this.$uploader.parent();

            // inputbox
            this.inputbox = new InputboxView({ attachment: true, charcount: true });
            this.assign( this.$inputbox, this.inputbox );
            this.listenTo( this.inputbox, 'focus', this.onInputFocus );

            // initialize uploader
            var url = joms.BASE_URL + 'index.php?option=com_community&view=photos&task=ajaxPreview',
                settings = constants.get('settings') || {};

            if ( settings.isGroup )
                url += '&no_html=1&tmpl=component&groupid=' + ( constants.get('groupid') || '' );

            if ( settings.isEvent )
                url += '&no_html=1&tmpl=component&eventid=' + ( constants.get('eventid') || '' );

            if ( settings.isPage ) 
                url += '&no_html=1&tmpl=component&pageid=' + ( constants.get('pageid') || '' ); 

            if ( $.ie ) {
                this.$uploader.appendTo( document.body );
                this.$uploader.show();
            }

            this.maxFileSize = +constants.get('conf.maxuploadsize') || 0;

            this.uploading = [];

            var upConfig = {
                container: 'joms-postbox-photo-upload',
                drop_element: 'joms-postbox-photo--droparea',
                browse_button: 'joms-postbox-photo-upload-btn',
                url: url,
                filters: [{ title: 'Image files', extensions: 'jpg,jpeg,png,gif' }],
                max_file_size: this.maxFileSize + 'mb'
            };

            // resizing on mobile cause errors on android stock browser!
            if ( !$.mobile )
                upConfig.resize = { width: 2100, height: 2100, quality: 90 };

            this.uploader = new Uploader( upConfig );
            this.uploader.onAdded = $.bind( this.onPhotoAdded, this );
            this.uploader.onError = $.bind( this.onPhotoError, this );
            this.uploader.onProgress = $.bind( this.onPhotoProgress, this );
            this.uploader.onUploaded = $.bind( this.onPhotoUploaded, this );
            this.uploader.init();

            if ( $.ie ) {
                this.$uploader.hide();
                this.$uploader.appendTo( this.$uploaderParent );
            }

            if ( this.enableGif ) {
                var gifConfig = {
                    container: 'joms-postbox-gif-upload',
                    browse_button: 'joms-postbox-gif-upload-btn',
                    url: url + '&gifanimation=1',
                    filters: [{ title: 'Image files', extensions: 'gif' }],
                    max_file_size: this.maxFileSize + 'mb',
                    multi_selection: false
                };

                this.gifuploader = new Uploader( gifConfig );
                this.gifuploader.onAdded = $.bind( this.onGifAdded, this );
                this.gifuploader.onError = $.bind( this.onGifError, this );
                this.gifuploader.onProgress = $.bind( this.onGifProgress, this );
                this.gifuploader.onUploaded = $.bind( this.onGifUploaded, this );
                this.gifuploader.init();
            }

            return this;
        },

        showInitialState: function() {
            this.$main.hide();
            this.$initial.show();
            $.ie && ($.ieVersion < 10) && this.ieUploadButtonFix( true );
            this.inputbox && this.inputbox.single();
            this.preview && this.preview.remove();
            this.preview = false;
            this.gifPreview && this.gifPreview.remove();
            this.gifPreview = false;
            this.showMoreButton();
            DefaultView.prototype.showInitialState.apply( this );
        },

        showMainState: function() {
            DefaultView.prototype.showMainState.apply( this );
            this.$action.hide();
            this.$initial.hide();
            this.$main.show();
            this.$save.show();
            $.ie && ($.ieVersion < 10) && this.ieUploadButtonFix();

            if ( App.postbox && App.postbox.value && App.postbox.value.length ) {
                this.inputbox.set( App.postbox.value[0] );
                App.postbox.value = false;
            }
        },

        showMoreButton: function() {
            this.$tabupload.removeClass('hidden invisible');
        },

        hideMoreButton: function() {
            this.$tabupload.addClass( this.subviews.mood ? 'hidden' : 'invisible' );
        },

        // ---------------------------------------------------------------------
        // Data validation and retrieval.
        // ---------------------------------------------------------------------

        reset: function() {
            DefaultView.prototype.reset.apply( this );
            this.inputbox && this.inputbox.reset();
            this.preview && this.preview.remove();
            this.preview = false;
            this.gifPreview && this.gifPreview.remove();
            this.gifPreview = false;
            this.uploading = [];
        },

        value: function() { 
            this.data.text = this.inputbox.value() || '';
            this.data.attachment = {};

            this.data.text = this.data.text.replace( /\n/g, '\\n' );

            var value;
            for ( var prop in this.subflags )
                if ( value = this.subviews[ prop ].value() )
                    this.data.attachment[ prop ] = value;

            if ( this.preview ) {
                $.extend( this.data.attachment, this.preview.value() );
            } else if ( this.gifPreview ) {
                $.extend( this.data.attachment, this.gifPreview.value() );
            }


            return DefaultView.prototype.value.apply( this, arguments );
        },

        validate: function() {
            var value = this.value( true ),
                attachment = value[1] || {};

            if ( !attachment.id && attachment.id.length )
                return 'No image selected.';
        },

        // ---------------------------------------------------------------------
        // Photo preview event handlers.
        // ---------------------------------------------------------------------

        onPhotoAdd: function() {
            if ( this.uploading.length )
                return;

            var conf = constants.get('conf') || {},
                limit = +conf.limitphoto,
                uploaded = +conf.uploadedphoto,
                num_photo_per_upload = +conf.num_photo_per_upload,
                curr = this.preview ? this.preview.getNumPics() : 0 ;

            if ( curr >= num_photo_per_upload ) {
                window.alert( language.get('photo.batch_notice') );
                return;
            }

            uploaded += curr;

            if ( uploaded >= limit ) {
                window.alert( language.get('photo.upload_limit_exceeded') || 'You have reached the upload limit.' );
                return;
            }

            // Opera 12 and lower (Presto engine), and IE 10, cannot open File Dialog without clicking the input[type=file] element.
            if ( window.opera || ($.ie && $.ieVersion === 10) )
                this.$('#joms-postbox-photo-upload').find('input[type=file]').click();
            else
                this.uploader.open();
        },

        onPhotoAdded: function( up, files ) {
            if ( this.uploading.length )
                return;

            if ( !(files && files.length) )
                return;

            var exts = 'jpg,jpeg,png,gif,JPG,JPEG,PNG,GIF',
                maxFileSize = this.maxFileSize;
                
            files = _.filter( files, function(file) {
                var ex = file.name.split('.').pop();
                return _.contains( exts.split(','), ex );
            });

            files = _.filter( files, function(file) {
                return file.size <= ( maxFileSize * 1024 * 1024 );
            });

             // daily limit checking
            var conf = constants.get('conf') || {},
                limit = +conf.limitphoto,
                uploaded = +conf.uploadedphoto,
                num_photo_per_upload = +conf.num_photo_per_upload,
                curr = this.preview ? this.preview.getNumPics() : 0;

            if ( curr + files.length > num_photo_per_upload ) {
                window.alert( language.get('photo.batch_notice') );
                _.each( files, function(file) {
                    up.removeFile(file);
                })
                return;
            }

            uploaded += curr;

            if ( uploaded >= limit ) {
                window.alert( language.get('photo.upload_limit_exceeded') || 'You have reached the upload limit.' );
                _.each( files, function(file) {
                    up.removeFile(file);
                })
                return;
            }

            var removed;
            if ( uploaded + files.length > limit ) {
                removed = uploaded + files.length - limit;
                files.splice( 0 - removed, removed );
                up.splice( 0 - removed, removed );
            }

            var div;
            if ( !this.preview ) {
                div = $('<div>').appendTo( this.$preview );
                this.preview = new PreviewView();
                this.assign( div, this.preview );
                this.listenTo( this.preview, 'update', function( num ) {
                    if ( !num || num <= 0 ) {
                        this.showInitialState();
                        this.inputbox.single();
                        this.uploading = [];
                        return;
                    } else if ( num >= num_photo_per_upload ) {
                        this.hideMoreButton();
                    } else {
                        this.showMoreButton();
                    }

                    this.inputbox[ num > 1 ? 'multiple' : 'single' ]();
                } );
            }

            this.showMainState();
            for ( var i = 0; i < files.length; i++ ) 
                this.preview.add( files[i] );

            var self = this;
            _.each( files, function(file) {
                self.uploading.push(file.id);
            });

            this.$action.hide();

            up.start();
            up.refresh();
        },

        onPhotoError: function( up, file ) {
            if ( +file.code === +plupload.FILE_EXTENSION_ERROR ) {
                window.alert( 'Photos: Selected file type is not permitted.' );
            } else if ( +file.code === +plupload.FILE_SIZE_ERROR ) {
                window.alert( language.get('photo.max_upload_size_error') );
            } else {
                console.log( file.message );
            }
        },

        onPhotoProgress: function( up, file ) {
            this.preview && this.preview.updateProgress( file );
        },

        onPhotoUploaded: function( up, file, info ) {
            var json;
            try {
                json = JSON.parse( info.response );
            } catch ( e ) {}

            json || (json = {});

            // onerror
            if ( !json.thumbnail ) {
                up.stop();
                up.splice();
                window.alert( json && json.msg || 'Undefined error.' );
                this.uploading = [];
                this.$action.show();
                this.preview && this.preview.removeFailed();
                return;
            }

            this.uploading = _.without( this.uploading, file.id);

            this.uploading.length === 0 && this.$action.show();

            this.preview && this.preview.setImage( file, json );
        },

        // ---------------------------------------------------------------------
        // GIF preview event handlers.
        // ---------------------------------------------------------------------

        onGifAdd: function() {
            this.hideMoreButton();
            this.gifuploader.open();
        },

        onGifAdded: function( up, files ) {
            var div;
            if ( !this.gifPreview ) {
                div = $('<div>').appendTo( this.$preview );
                this.gifPreview = new GifPreviewView();
                this.assign( div, this.gifPreview );
                this.listenTo( this.gifPreview, 'update', function( num ) {
                    if ( !num || num <= 0 ) {
                        this.showInitialState();
                        this.inputbox.single();
                        this.uploading = [];
                        return;
                    }

                    this.hideMoreButton();
                    this.inputbox.single();
                } );
            }

            this.showMainState();
            this.gifPreview.add( files[0] );

            up.start();
            up.refresh();
        },

        onGifError: function( up, file ) {
            if ( +file.code === +plupload.FILE_EXTENSION_ERROR ) {
                window.alert( 'Gifs: Selected file type is not permitted.' );
            } else if ( +file.code === +plupload.FILE_SIZE_ERROR ) {
                window.alert( language.get('photo.max_upload_size_error') );
            } else {
                console.log( file.message );
            }
        },

        onGifProgress: function( up, file ) {
            this.gifPreview.updateProgress( file );
        },

        onGifUploaded: function( up, file, info ) {
            var json;
            try {
                json = JSON.parse( info.response );
            } catch ( e ) {}

            json || (json = {});

            // onerror
            if ( !json.image ) {
                up.stop();
                up.splice();
                window.alert( json && json.msg || 'Undefined error.' );
                this.$action.show();
                this.gifPreview && this.gifPreview.removeFailed();
                return;
            }

            this.$action.show();
            if ( this.gifPreview )
                this.gifPreview.setImage( file, json );
        },

        // ---------------------------------------------------------------------
        // Drop event handlers.
        // ---------------------------------------------------------------------

        onDragEnter: function(e) {
            e.preventDefault();
            this.$dropArea.show();
            this.$dropArea.css('line-height', this.$dropArea.height() + 'px');
        },

        onDragLeave: function(e) {
            e.preventDefault();
            this.$dropArea.hide();
        },

        onFileDrop: function(e) {
            e.preventDefault();
            this.$dropArea.hide();
        },


        // ---------------------------------------------------------------------
        // Dropdowns event handlers.
        // ---------------------------------------------------------------------

        onMoodSelect: function( mood ) {
            this.inputbox.updateAttachment( mood );
        },

        onMoodRemove: function() {
            this.inputbox.updateAttachment( false );
        },

        // ---------------------------------------------------------------------
        // Helper functions.
        // ---------------------------------------------------------------------

        getTemplate: function() {
            var html = this.template({
                juri: constants.get('juri'),
                allowgif: constants.get('conf.enablephotosgif') || false,
                language: {
                    postbox: language.get('postbox') || {},
                    status: language.get('status') || {},
                    photo: language.get('photo') || {}
                }
            });

            return $( html ).hide();
        },

        getStaticAttachment: function() {
            if ( this.staticAttachment )
                return this.staticAttachment;

            this.staticAttachment = $.extend({},
                constants.get('postbox.attachment') || {},
                { type: 'photo' }
            );

            return this.staticAttachment;
        },

        ieUploadButtonFix: function( initialState ) {
            if ( !this.ieUploadButtonFix.init ) {
                this.ieUploadButtonFix.init = true;
                this.$uploader.css({
                    display: 'block',
                    position: 'absolute',
                    opacity: 0,
                    width: '',
                    height: ''
                }).children('button,form').css({
                    display: 'block',
                    position: 'absolute',
                    width: '',
                    height: '',
                    top: 0,
                    right: 0,
                    bottom: 0,
                    left: 0
                }).children('input').css({
                    cursor: 'pointer',
                    height: '100%'
                });
            }

            if ( initialState ) {
                this.$uploader.appendTo( this.$uploaderParent );
                this.$uploader.css({
                    top: 12,
                    right: 12,
                    bottom: 12,
                    left: 12
                }).children('form').css({
                    width: '100%',
                    height: '100%'
                });
            } else {
                this.$uploader.appendTo( this.$tabupload );
                this.$uploader.css({
                    top: 0,
                    right: 0,
                    bottom: 0,
                    left: 0
                });
            }
        }

    });

});

Anon7 - 2022
AnonSec Team