Plugin Directory

Changeset 3784940


Ignore:
Timestamp:
11/04/2026 11:21:37 PM (2 days ago)
Author:
videowhisper
Message:

Release 4.1.1: encode frontend settings and legacy listing/uploader output

Location:
paid-membership/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • paid-membership/trunk/inc/options.php

    r3784629 r3784940  
    740740                $options = self::getOptions();
    741741
    742                 if ( $options['download_extensions'] ) {
     742                if ( ! empty( $options['download_extensions'] ) && is_string( $options['download_extensions'] ) ) {
    743743                        $extensions = explode( ',', $options['download_extensions'] );
    744744
  • paid-membership/trunk/inc/shortcodes.php

    r3784838 r3784940  
    1010
    1111trait Shortcodes {
     12        /** The suffix is used in legacy JavaScript identifiers as well as DOM IDs. */
     13        static function downloads_id( $value, $generate = false ) {
     14                $id = is_string( $value ) ? substr( preg_replace( '/[^A-Za-z0-9_]/', '', substr( $value, 0, 512 ) ), 0, 64 ) : '';
     15                return '' === $id && $generate ? uniqid() : $id;
     16        }
     17
     18        /** Serialize data once for a script element; HTML attributes still need esc_attr(). */
     19        static function frontend_json( $value ) {
     20                return wp_json_encode( $value, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT );
     21        }
     22
     23        /** Presentation only: retain finite configured values, never execute numeric settings. */
     24        static function frontend_number( $value, $fallback ) {
     25                return is_scalar( $value ) && is_numeric( $value ) && is_finite( (float) $value ) ? (float) $value : (float) $fallback;
     26        }
    1227
    1328        /** Staging is scoped to the authenticated uploader, including publication. */
    … …  
    182197                        // Ensure all values are properly sanitized
    183198                        $atts = array_map('sanitize_text_field', $atts);
    184                         $atts = array_map( 'esc_attr', $atts );
    185 
    186 
    187                         $id = $atts['id'];
    188                         if ( ! $id ) {
    189                                 $id = uniqid();
    190                         }
     199                        $id = self::downloads_id( $atts['id'], true );
    191200
    192201                        self::enqueueUI();
    … …  
    195204                        $ajaxurl = admin_url() . 'admin-ajax.php?action=vwpm_downloads&pp=' . urlencode($atts['perpage']) . '&pr=' . urlencode($atts['perrow']) . '&collection=' . urlencode( $atts['collection'] ) . '&ob=' . urlencode($atts['order_by']) . '&cat=' . urlencode($atts['category_id']) . '&sc=' . urlencode($atts['select_category']) . '&so=' . urlencode($atts['select_order']) . '&sp=' . urlencode($atts['select_page']) . '&sn=' . urlencode($atts['select_name']) . '&sg=' . urlencode($atts['select_tags']) . '&id=' . urlencode($id) . '&tags=' . urlencode( $atts['tags'] ) . '&name=' . urlencode( $atts['name'] );
    196205
    197                         $escaped_ajaxurl = esc_js($ajaxurl);
     206                        $escaped_ajaxurl = self::frontend_json( esc_url_raw( $ajaxurl ) );
     207                        $loading_downloads = esc_html__( 'Loading downloads...', 'paid-membership' );
    198208                        // phpcs:ignore PluginCheck.CodeAnalysis.Heredoc.NotAllowed -- Context-escaped JavaScript template.
    199209                        $htmlCode = <<<HTMLCODE
    200210<script type="text/javascript">
    201 var aurl{$id} = '{$escaped_ajaxurl}';
     211var aurl{$id} = {$escaped_ajaxurl};
    202212var \$j = jQuery.noConflict();
    203213var loader{$id};
    … …  
    226236        \$j(function(){
    227237                loadDownloads{$id}();
    228                 setInterval("loadDownloads{$id}('')", 60000);
     238                setInterval(function(){ loadDownloads{$id}(''); }, 60000);
    229239        });
    230240
    … …  
    232242
    233243<div id="videowhisperDownloads{$id}">
    234     Loading downloads...
     244    {$loading_downloads}
    235245</div>
    236246
    … …  
    22022212                }
    22032213
    2204                 $ajaxurl = esc_url(admin_url( 'admin-ajax.php?action=vwpm_donate' ));
     2214                $ajaxurl = self::frontend_json( esc_url_raw( admin_url( 'admin-ajax.php?action=vwpm_donate' ) ) );
    22052215                $clientID = esc_js($clientID);
    22062216                $userID = esc_js($userID);
    … …  
    22462256jQuery.ajax({
    22472257  method: \'POST\',
    2248   url: \'' . self::esc_url_for_js($ajaxurl) . '\',
     2258  url: ' . esc_attr( $ajaxurl ) . ',
    22492259  data: {
    22502260          amount: jQuery(\'#amount\').val(),
    … …  
    22682278const slider1 = jQuery(\'#slider-1\');
    22692279slider1.slider({
    2270     min: ' . $options['donationMin'] . ',
    2271     max: ' . $options['donationMax'] . ',
    2272     start: ' . $options['donationDefault'] . ',
    2273     step: ' . $options['donationStep'] . ',
     2280    min: ' . self::frontend_json( self::frontend_number( $options['donationMin'] ?? null, 1 ) ) . ',
     2281    max: ' . self::frontend_json( self::frontend_number( $options['donationMax'] ?? null, 31 ) ) . ',
     2282    start: ' . self::frontend_json( self::frontend_number( $options['donationDefault'] ?? null, 5 ) ) . ',
     2283    step: ' . self::frontend_json( self::frontend_number( $options['donationStep'] ?? null, 2 ) ) . ',
    22742284        smooth: true,
    22752285        showLabelTicks: true,
    … …  
    45694579                wp_enqueue_style( 'jquery-ui-css', dirname( plugin_dir_url( __FILE__ ) ) . '/interface/jquery.ui/jquery-ui.min.css', array(), '3.2.7' );
    45704580                wp_enqueue_style( 'plupload2-widget', dirname( plugin_dir_url( __FILE__ ) ) . '/interface/jquery.ui.plupload/css/jquery.ui.plupload.css', array(), '3.2.7' );
    4571                 wp_enqueue_script( 'plupload2-widget', dirname( plugin_dir_url( __FILE__ ) ) . '/interface/jquery.ui.plupload/jquery.ui.plupload.min.js', array( 'plupload' ), '3.2.7', true );
     4581                wp_enqueue_script( 'plupload2-widget', dirname( plugin_dir_url( __FILE__ ) ) . '/interface/jquery.ui.plupload/jquery.ui.plupload.min.js', array( 'plupload' ), '4.1.1', true );
    45724582
    45734583                if ( $atts['category'] ) {
    … …  
    48934903                $extensions = array();
    48944904
    4895                 $mime_types = '';
     4905                $mime_types = array();
    48964906
    48974907                if ( class_exists( 'VWvideoShare' ) ) {
    4898                         $mime_types .= ( $mime_types ? ', ' : '' ) . '{title : "Videos", extensions : "' . implode( ',', \VWvideoShare::extensions_video() ) . '"}';
     4908                        $mime_types[] = array( 'title' => __( 'Videos', 'paid-membership' ), 'extensions' => implode( ',', \VWvideoShare::extensions_video() ) );
    48994909                        $extensions = array_merge( $extensions, \VWvideoShare::extensions_video() );
    49004910                }
    49014911
    49024912                if ( class_exists( 'VWpictureGallery' ) ) {
    4903                         $mime_types .= ( $mime_types ? ', ' : '' ) . '{title : "Pictures", extensions : "' . implode( ',', \VWpictureGallery::extensions_picture() ) . '"}';
     4913                        $mime_types[] = array( 'title' => __( 'Pictures', 'paid-membership' ), 'extensions' => implode( ',', \VWpictureGallery::extensions_picture() ) );
    49044914                        $extensions = array_merge( $extensions, \VWpictureGallery::extensions_picture() );
    49054915                }
    49064916
    49074917                if ( $options['downloads'] ) {
    4908                         $mime_types .= ( $mime_types ? ', ' : '' ) . '{title : "Documents", extensions : "' . implode( ',', self::extensions_download() ) . '"}';
     4918                        $mime_types[] = array( 'title' => __( 'Documents', 'paid-membership' ), 'extensions' => implode( ',', self::extensions_download() ) );
    49094919                        $extensions = array_merge( $extensions, self::extensions_download() );
    49104920
    … …  
    49164926
    49174927                $ajaxurl = add_query_arg( array( 'action' => 'vwpm_plupload', '_wpnonce' => wp_create_nonce( 'vwpm_content_upload' ) ), admin_url( 'admin-ajax.php' ) );
     4928                $ajaxurl = self::frontend_json( esc_url_raw( $ajaxurl ) );
     4929                $mime_types = self::frontend_json( $mime_types );
    49184930                $upload_nonce_field = wp_nonce_field( 'vwpm_content_upload', 'vwpm_content_upload_nonce', true, false );
    49194931
    … …  
    49694981                // General settings
    49704982                runtimes : 'html5,flash,silverlight,html4',
    4971                 url : '$ajaxurl',
     4983                url : $ajaxurl,
    49724984                multi_selection: $multi_selection,
    49734985
    … …  
    49834995
    49844996                        // Specify what files to browse for
    4985                         mime_types: [
    4986                                 $mime_types
    4987                         ],
     4997                        mime_types: $mime_types,
    49884998                        prevent_duplicates: true
    49894999                },
    … …  
    50125022
    50135023jQuery('#uploader').on('error', function(event, args) {
    5014                         jQuery('#uploader').plupload('notify', 'error', args.error.message);
     5024                        jQuery('#uploader').plupload('notify', 'error', plupload.xmlEncode(String(args.error.message || '')));
    50155025                        //console.log(args, event);
    50165026                                                        });
  • paid-membership/trunk/interface/jquery.ui.plupload/jquery.ui.plupload.js

    r2586428 r3784940  
    77 * License: http://www.plupload.com/license
    88 * Contributing: http://www.plupload.com/contributing
     9 *
     10 * VideoWhisper local maintenance (2026-11-05): render filenames and error text
     11 * as text; retain notification wrappers. Source and matching minified output ship together.
     12 * Build: npx terser@5.44.1 jquery.ui.plupload.js --compress --mangle
     13 * --comments '/Copyright|License/' --output jquery.ui.plupload.min.js
    914 *
    1015 * Depends:
    … …  
    462467                        var message, details = "";
    463468
    464                         message = '<strong>' + err.message + '</strong>';
     469                        message = '<strong>' + plupload.xmlEncode(String(err.message || '')) + '</strong>';
    465470               
    466471                        switch (err.code) {
    … …  
    499504                        }
    500505
    501                         message += " <br /><i>" + details + "</i>";
     506                        message += " <br /><i>" + plupload.xmlEncode(String(details)) + "</i>";
    502507
    503508                        self._trigger('error', null, { up: up, error: err });
    … …  
    12221227
    12231228                                case 'ext':
    1224                                 return ext;
     1229                                return plupload.xmlEncode(String(ext));
    12251230
    12261231                                default:
    1227                                return file[$1] || '';
     1232                               return plupload.xmlEncode(String(file[$1] || ''));
    12281233                                }
    12291234                            }
    … …  
    13771382                                    if (e.keyCode === 13) {
    13781383                                          file.name = nameInput.val() + ext;
    1379                                           nameSpan.html(file.name);
     1384                                          nameSpan.text(file.name);
    13801385                                    }
    13811386                                    nameInput.blur();
  • paid-membership/trunk/interface/jquery.ui.plupload/jquery.ui.plupload.min.js

    r2585316 r3784940  
    1 ;(function(e,t,n,r,i){function o(e){return n.translate(e)||e}function u(e){e.id=e.attr("id"),e.html('<div class="plupload_wrapper"><div class="ui-widget-content plupload_container"><div class="ui-state-default ui-widget-header plupload_header"><div class="plupload_header_content"><div class="plupload_logo"> </div><div class="plupload_header_title">'+o("Select files")+"</div>"+'<div class="plupload_header_text">'+o("Add files to the upload queue and click the start button.")+"</div>"+'<div class="plupload_view_switch">'+'<input type="radio" id="'+e.id+'_view_list" name="view_mode_'+e.id+'" checked="checked" /><label class="plupload_button" for="'+e.id+'_view_list" data-view="list">'+o("List")+"</label>"+'<input type="radio" id="'+e.id+'_view_thumbs" name="view_mode_'+e.id+'" /><label class="plupload_button"  for="'+e.id+'_view_thumbs" data-view="thumbs">'+o("Thumbnails")+"</label>"+"</div>"+"</div>"+"</div>"+'<table class="plupload_filelist plupload_filelist_header ui-widget-header">'+"<tr>"+'<td class="plupload_cell plupload_file_name">'+o("Filename")+"</td>"+'<td class="plupload_cell plupload_file_status">'+o("Status")+"</td>"+'<td class="plupload_cell plupload_file_size">'+o("Size")+"</td>"+'<td class="plupload_cell plupload_file_action">&nbsp;</td>'+"</tr>"+"</table>"+'<div class="plupload_content">'+'<div class="plupload_droptext">'+o("Drag files here.")+"</div>"+'<ul class="plupload_filelist_content"> </ul>'+'<div class="plupload_clearer">&nbsp;</div>'+"</div>"+'<table class="plupload_filelist plupload_filelist_footer ui-widget-header">'+"<tr>"+'<td class="plupload_cell plupload_file_name">'+'<div class="plupload_buttons"><!-- Visible -->'+'<a class="plupload_button plupload_add">'+o("Add Files")+"</a>&nbsp;"+'<a class="plupload_button plupload_start">'+o("Start Upload")+"</a>&nbsp;"+'<a class="plupload_button plupload_stop plupload_hidden">'+o("Stop Upload")+"</a>&nbsp;"+"</div>"+'<div class="plupload_started plupload_hidden"><!-- Hidden -->'+'<div class="plupload_progress plupload_right">'+'<div class="plupload_progress_container"></div>'+"</div>"+'<div class="plupload_cell plupload_upload_status"></div>'+'<div class="plupload_clearer">&nbsp;</div>'+"</div>"+"</td>"+'<td class="plupload_file_status"><span class="plupload_total_status">0%</span></td>'+'<td class="plupload_file_size"><span class="plupload_total_file_size">0 kb</span></td>'+'<td class="plupload_file_action"></td>'+"</tr>"+"</table>"+"</div>"+'<input class="plupload_count" value="0" type="hidden">'+"</div>")}var s={};i.widget("ui.plupload",{widgetEventPrefix:"",contents_bak:"",options:{browse_button_hover:"ui-state-hover",browse_button_active:"ui-state-active",filters:{},buttons:{browse:!0,start:!0,stop:!0},views:{list:!0,thumbs:!1,active:"list",remember:!0},thumb_width:100,thumb_height:60,multiple_queues:!0,dragdrop:!0,autostart:!1,sortable:!1,rename:!1},FILE_COUNT_ERROR:-9001,_create:function(){var e=this.element.attr("id");e||(e=n.guid(),this.element.attr("id",e)),this.id=e,this.contents_bak=this.element.html(),u(this.element),this.container=i(".plupload_container",this.element).attr("id",e+"_container"),this.content=i(".plupload_content",this.element),i.fn.resizable&&this.container.resizable({handles:"s",minHeight:300}),this.filelist=i(".plupload_filelist_content",this.container).attr({id:e+"_filelist",unselectable:"on"}),this.browse_button=i(".plupload_add",this.container).attr("id",e+"_browse"),this.start_button=i(".plupload_start",this.container).attr("id",e+"_start"),this.stop_button=i(".plupload_stop",this.container).attr("id",e+"_stop"),this.thumbs_switcher=i("#"+e+"_view_thumbs"),this.list_switcher=i("#"+e+"_view_list"),i.ui.button&&(this.browse_button.button({icons:{primary:"ui-icon-circle-plus"},disabled:!0}),this.start_button.button({icons:{primary:"ui-icon-circle-arrow-e"},disabled:!0}),this.stop_button.button({icons:{primary:"ui-icon-circle-close"}}),this.list_switcher.button({text:!1,icons:{secondary:"ui-icon-grip-dotted-horizontal"}}),this.thumbs_switcher.button({text:!1,icons:{secondary:"ui-icon-image"}})),this.progressbar=i(".plupload_progress_container",this.container),i.ui.progressbar&&this.progressbar.progressbar(),this.counter=i(".plupload_count",this.element).attr({id:e+"_count",name:e+"_count"}),this._initUploader()},_initUploader:function(){var e=this,t=this.id,u,a={container:t+"_buttons",browse_button:t+"_browse"};i(".plupload_buttons",this.element).attr("id",t+"_buttons"),e.options.dragdrop&&(this.filelist.parent().attr("id",this.id+"_dropbox"),a.drop_element=this.id+"_dropbox"),this.filelist.on("click",function(t){i(t.target).hasClass("plupload_action_icon")&&(e.removeFile(i(t.target).closest(".plupload_file").attr("id")),t.preventDefault())}),u=this.uploader=s[t]=new n.Uploader(i.extend(this.options,a)),this.options=u.getOption(),e.options.views.thumbs&&(u.settings.required_features.display_media=!0),e.options.max_file_count&&n.extend(u.getOption("filters"),{max_file_count:e.options.max_file_count}),n.addFileFilter("max_file_count",function(t,n,r){t<=this.files.length-(this.total.uploaded+this.total.failed)?(e.browse_button.button("disable"),this.disableBrowse(),this.trigger("Error",{code:e.FILE_COUNT_ERROR,message:o("File count error."),file:n}),r(!1)):r(!0)}),u.bind("Error",function(t,i){var s,u="";s="<strong>"+i.message+"</strong>";switch(i.code){case n.FILE_EXTENSION_ERROR:u=r.sprintf(o("File: %s"),i.file.name);break;case n.FILE_SIZE_ERROR:u=r.sprintf(o("File: %s, size: %d, max file size: %d"),i.file.name,n.formatSize(i.file.size),n.formatSize(n.parseSize(t.getOption("filters").max_file_size)));break;case n.FILE_DUPLICATE_ERROR:u=r.sprintf(o("%s already present in the queue."),i.file.name);break;case e.FILE_COUNT_ERROR:u=r.sprintf(o("Upload element accepts only %d file(s) at a time. Extra files were stripped."),t.getOption("filters").max_file_count||0);break;case n.IMAGE_FORMAT_ERROR:u=o("Image format either wrong or not supported.");break;case n.IMAGE_MEMORY_ERROR:u=o("Runtime ran out of available memory.");break;case n.HTTP_ERROR:u=o("Upload URL might be wrong or doesn't exist.")}s+=" <br /><i>"+u+"</i>",e._trigger("error",null,{up:t,error:i}),i.code===n.INIT_ERROR?setTimeout(function(){e.destroy()},1):e.notify("error",s)}),u.bind("PostInit",function(t){e.options.buttons.browse?e.browse_button.button("enable"):(e.browse_button.button("disable").hide(),t.disableBrowse(!0)),e.options.buttons.start||e.start_button.button("disable").hide(),e.options.buttons.stop||e.stop_button.button("disable").hide(),!e.options.unique_names&&e.options.rename&&e._enableRenaming(),e.options.dragdrop&&t.features.dragdrop&&e.filelist.parent().addClass("plupload_dropbox"),e._enableViewSwitcher(),e.start_button.click(function(t){i(this).button("option","disabled")||e.start(),t.preventDefault()}),e.stop_button.click(function(t){e.stop(),t.preventDefault()}),e._trigger("ready",null,{up:t})}),u.init(),u.bind("FileFiltered",function(t,n){e._addFiles(n)}),u.bind("FilesAdded",function(t,n){e._trigger("selected",null,{up:t,files:n}),e.options.sortable&&i.ui.sortable&&e._enableSortingList(),e._trigger("updatelist",null,{filelist:e.filelist}),e.options.autostart&&setTimeout(function(){e.start()},10)}),u.bind("FilesRemoved",function(t,n){i.ui.sortable&&e.options.sortable&&i("tbody",e.filelist).sortable("destroy"),i.each(n,function(e,t){i("#"+t.id).toggle("highlight",function(){i(this).remove()})}),t.files.length&&e.options.sortable&&i.ui.sortable&&e._enableSortingList(),e._trigger("updatelist",null,{filelist:e.filelist}),e._trigger("removed",null,{up:t,files:n})}),u.bind("QueueChanged",function(){e._handleState()}),u.bind("StateChanged",function(t){e._handleState(),n.STARTED===t.state?e._trigger("started",null,{up:this.uploader}):n.STOPPED===t.state&&e._trigger("stopped",null,{up:this.uploader})}),u.bind("UploadFile",function(t,n){e._handleFileStatus(n)}),u.bind("FileUploaded",function(t,n,r){e._handleFileStatus(n),e._trigger("uploaded",null,{up:t,file:n,result:r})}),u.bind("UploadProgress",function(t,n){e._handleFileStatus(n),e._updateTotalProgress(),e._trigger("progress",null,{up:t,file:n})}),u.bind("UploadComplete",function(t,n){e._addFormFields(),e._trigger("complete",null,{up:t,files:n})})},_setOption:function(e,t){var n=this;e=="buttons"&&typeof t=="object"&&(t=i.extend(n.options.buttons,t),t.browse?(n.browse_button.button("enable").show(),n.uploader.disableBrowse(!1)):(n.browse_button.button("disable").hide(),n.uploader.disableBrowse(!0)),t.start?n.start_button.button("enable").show():n.start_button.button("disable").hide(),t.stop?n.start_button.button("enable").show():n.stop_button.button("disable").hide()),n.uploader.setOption(e,t)},start:function(){this.uploader.start()},stop:function(){this.uploader.stop()},enable:function(){this.browse_button.button("enable"),this.uploader.disableBrowse(!1)},disable:function(){this.browse_button.button("disable"),this.uploader.disableBrowse(!0)},getFile:function(e){var t;return typeof e=="number"?t=this.uploader.files[e]:t=this.uploader.getFile(e),t},getFiles:function(){return this.uploader.files},removeFile:function(e){n.typeOf(e)==="string"&&(e=this.getFile(e)),this.uploader.removeFile(e)},clearQueue:function(){this.uploader.splice()},getUploader:function(){return this.uploader},refresh:function(){this.uploader.refresh()},notify:function(e,t){var n=i('<div class="plupload_message"><span class="plupload_message_close ui-icon ui-icon-circle-close" title="'+o("Close")+'"></span>'+'<p><span class="ui-icon"></span>'+t+"</p>"+"</div>");n.addClass("ui-state-"+(e==="error"?"error":"highlight")).find("p .ui-icon").addClass("ui-icon-"+(e==="error"?"alert":"info")).end().find(".plupload_message_close").click(function(){n.remove()}).end(),i(".plupload_header",this.container).append(n)},destroy:function(){this.uploader.destroy(),i(".plupload_button",this.element).unbind(),i.ui.button&&i(".plupload_add, .plupload_start, .plupload_stop",this.container).button("destroy"),i.ui.progressbar&&this.progressbar.progressbar("destroy"),i.ui.sortable&&this.options.sortable&&i("tbody",this.filelist).sortable("destroy"),this.element.empty().html(this.contents_bak),this.contents_bak="",i.Widget.prototype.destroy.apply(this)},_handleState:function(){var e=this.uploader,t=e.files.length-(e.total.uploaded+e.total.failed),s=e.getOption("filters").max_file_count||0;n.STARTED===e.state?(i([]).add(this.stop_button).add(".plupload_started").removeClass("plupload_hidden"),this.start_button.button("disable"),this.options.multiple_queues||(this.browse_button.button("disable"),e.disableBrowse()),i(".plupload_upload_status",this.element).html(r.sprintf(o("Uploaded %d/%d files"),e.total.uploaded,e.files.length)),i(".plupload_header_content",this.element).addClass("plupload_header_content_bw")):n.STOPPED===e.state&&(i([]).add(this.stop_button).add(".plupload_started").addClass("plupload_hidden"),t?this.start_button.button("enable"):this.start_button.button("disable"),this.options.multiple_queues&&i(".plupload_header_content",this.element).removeClass("plupload_header_content_bw"),this.options.multiple_queues&&s&&s>t&&(this.browse_button.button("enable"),e.disableBrowse(!1)),this._updateTotalProgress()),e.total.queued===0?i(".ui-button-text",this.browse_button).html(o("Add Files")):i(".ui-button-text",this.browse_button).html(r.sprintf(o("%d files queued"),e.total.queued)),e.refresh()},_handleFileStatus:function(e){var t=i("#"+e.id),r,s;if(!t.length)return;switch(e.status){case n.DONE:r="plupload_done",s="plupload_action_icon ui-icon ui-icon-circle-check";break;case n.FAILED:r="ui-state-error plupload_failed",s="plupload_action_icon ui-icon ui-icon-alert";break;case n.QUEUED:r="plupload_delete",s="plupload_action_icon ui-icon ui-icon-circle-minus";break;case n.UPLOADING:r="ui-state-highlight plupload_uploading",s="plupload_action_icon ui-icon ui-icon-circle-arrow-w";var o=i(".plupload_scroll",this.container),u=o.scrollTop(),a=o.height(),f=t.position().top+t.height();a<f&&o.scrollTop(u+f-a),t.find(".plupload_file_percent").html(e.percent+"%").end().find(".plupload_file_progress").css("width",e.percent+"%").end().find(".plupload_file_size").html(n.formatSize(e.size))}r+=" ui-state-default plupload_file",t.attr("class",r).find(".plupload_action_icon").attr("class",s)},_updateTotalProgress:function(){var e=this.uploader;this.filelist[0].scrollTop=this.filelist[0].scrollHeight,this.progressbar.progressbar("value",e.total.percent),this.element.find(".plupload_total_status").html(e.total.percent+"%").end().find(".plupload_total_file_size").html(n.formatSize(e.total.size)).end().find(".plupload_upload_status").html(r.sprintf(o("Uploaded %d/%d files"),e.total.uploaded,e.files.length))},_displayThumbs:function(){function f(e,t,n){var r;e.on(t,function(){clearTimeout(r),r=setTimeout(function(){clearTimeout(r),n()},300)})}function l(){if(!t||!n){var r=i(".plupload_file:eq(0)",e.filelist);t=r.outerWidth(!0),n=r.outerHeight(!0)}var u=e.content.width(),a=e.content.height();s=Math.floor(u/t),o=s*(Math.ceil(a/n)+1)}function c(){var t=Math.floor(e.content.scrollTop()/n)*s;u=i(".plupload_file .plupload_file_thumb",e.filelist).slice(t,t+o).filter(".plupload_thumb_toload").get()}function h(){function t(){if(e.view_mode!=="thumbs")return;l(),c(),d()}i.fn.resizable&&f(e.container,"resize",t),f(e.window,"resize",t),f(e.content,"scroll",t),e.element.on("viewchanged selected",t),t()}function p(t,n){var s=new r.Image;s.onload=function(){var n=i("#"+t.id+" .plupload_file_thumb",e.filelist);this.embed(n[0],{width:e.options.thumb_width,height:e.options.thumb_height,crop:!0,preserveHeaders:!1,swf_url:r.resolveUrl(e.options.flash_swf_url),xap_url:r.resolveUrl(e.options.silverlight_xap_url)})},s.bind("embedded error",function(r){i("#"+t.id,e.filelist).find(".plupload_file_thumb").removeClass("plupload_thumb_loading").addClass("plupload_thumb_"+r.type),this.destroy(),setTimeout(n,1)}),i("#"+t.id,e.filelist).find(".plupload_file_thumb").removeClass("plupload_thumb_toload").addClass("plupload_thumb_loading"),s.load(t.getSource())}function d(){if(e.view_mode!=="thumbs"||a)return;c();if(!u.length)return;a=!0,p(e.getFile(i(u.shift()).closest(".plupload_file").attr("id")),function(){a=!1,d()})}var e=this,t,n,s,o=0,u=[],a=!1;if(!this.options.views.thumbs)return;this.element.on("selected",function v(){e.element.off("selected",v),h()})},_addFiles:function(e){var t=this,s,o="";s='<li class="plupload_file ui-state-default plupload_delete" id="{id}" style="width:{thumb_width}px;"><div class="plupload_file_thumb plupload_thumb_toload" style="width: {thumb_width}px; height: {thumb_height}px;"><div class="plupload_file_dummy ui-widget-content" style="line-height: {thumb_height}px;"><span class="ui-state-disabled">{ext} </span></div></div><div class="plupload_file_status"><div class="plupload_file_progress ui-widget-header" style="width: 0%"> </div><span class="plupload_file_percent">{percent} </span></div><div class="plupload_file_name" title="{name}"><span class="plupload_file_name_wrapper">{name} </span></div><div class="plupload_file_action"><div class="plupload_action_icon ui-icon ui-icon-circle-minus"> </div></div><div class="plupload_file_size">{size} </div><div class="plupload_file_fields"> </div></li>',n.typeOf(e)!=="array"&&(e=[e]),i.each(e,function(e,i){var u=r.Mime.getFileExtension(i.name)||"none";o+=s.replace(/\{(\w+)\}/g,function(e,r){switch(r){case"thumb_width":case"thumb_height":return t.options[r];case"size":return n.formatSize(i.size);case"ext":return u;default:return i[r]||""}})}),t.filelist.append(o)},_addFormFields:function(){var e=this;i(".plupload_file_fields",this.filelist).html(""),n.each(this.uploader.files,function(t,r){var s="",o=e.id+"_"+r;t.target_name&&(s+='<input type="hidden" name="'+o+'_tmpname" value="'+n.xmlEncode(t.target_name)+'" />'),s+='<input type="hidden" name="'+o+'_name" value="'+n.xmlEncode(t.name)+'" />',s+='<input type="hidden" name="'+o+'_status" value="'+(t.status===n.DONE?"done":"failed")+'" />',i("#"+t.id).find(".plupload_file_fields").html(s)}),this.counter.val(this.uploader.files.length)},_viewChanged:function(e){this.options.views.remember&&i.cookie&&i.cookie("plupload_ui_view",e,{expires:7,path:"/"}),r.Env.browser==="IE"&&r.Env.version<7&&this.content.attr("style",'height:expression(document.getElementById("'+this.id+"_container"+'").clientHeight - '+(e==="list"?132:102)+")"),this.container.removeClass("plupload_view_list plupload_view_thumbs").addClass("plupload_view_"+e),this.view_mode=e,this._trigger("viewchanged",null,{view:e})},_enableViewSwitcher:function(){var e=this,t,r=i(".plupload_view_switch",this.container),s,o;n.each(["list","thumbs"],function(t){e.options.views[t]||r.find('[for="'+e.id+"_view_"+t+'"], #'+e.id+"_view_"+t).remove()}),s=r.find(".plupload_button"),s.length===1?(r.hide(),t=s.eq(0).data("view"),this._viewChanged(t)):i.ui.button&&s.length>1?(this.options.views.remember&&i.cookie&&(t=i.cookie("plupload_ui_view")),~n.inArray(t,["list","thumbs"])||(t=this.options.views.active),r.show().buttonset().find(".ui-button").click(function(n){t=i(this).data("view"),e._viewChanged(t),n.preventDefault()}),o=r.find('[for="'+e.id+"_view_"+t+'"]'),o.length&&o.trigger("click")):(r.show(),this._viewChanged(this.options.views.active)),this.options.views.thumbs&&this._displayThumbs()},_enableRenaming:function(){var e=this;this.filelist.dblclick(function(t){var n=i(t.target),r,s,o,u,a="";if(!n.hasClass("plupload_file_name_wrapper"))return;s=e.uploader.getFile(n.closest(".plupload_file")[0].id),u=s.name,o=/^(.+)(\.[^.]+)$/.exec(u),o&&(u=o[1],a=o[2]),r=i('<input class="plupload_file_rename" type="text" />').width(n.width()).insertAfter(n.hide()),r.val(u).blur(function(){n.show().parent().scrollLeft(0).end().next().remove()}).keydown(function(e){var t=i(this);i.inArray(e.keyCode,[13,27])!==-1&&(e.preventDefault(),e.keyCode===13&&(s.name=t.val()+a,n.html(s.name)),t.blur())})[0].focus()})},_enableSortingList:function(){var e=this;if(i(".plupload_file",this.filelist).length<2)return;i("tbody",this.filelist).sortable("destroy"),this.filelist.sortable({items:".plupload_delete",cancel:"object, .plupload_clearer",stop:function(){var t=[];i.each(i(this).sortable("toArray"),function(n,r){t[t.length]=e.uploader.getFile(r)}),t.unshift(t.length),t.unshift(0),Array.prototype.splice.apply(e.uploader.files,t)}})}})})(window,document,plupload,mOxie,jQuery);
     1/**
     2 * jquery.ui.plupload.js
     3 *
     4 * Copyright 2013, Moxiecode Systems AB
     5 * Released under GPL License.
     6 *
     7 * License: http://www.plupload.com/license
     8 * Contributing: http://www.plupload.com/contributing
     9 *
     10 * VideoWhisper local maintenance (2026-11-05): render filenames and error text
     11 * as text; retain notification wrappers. Source and matching minified output ship together.
     12 * Build: npx terser@5.44.1 jquery.ui.plupload.js --compress --mangle
     13 * --comments '/Copyright|License/' --output jquery.ui.plupload.min.js
     14 *
     15 * Depends:
     16 *    jquery.ui.core.js
     17 *    jquery.ui.widget.js
     18 *    jquery.ui.button.js
     19 *    jquery.ui.progressbar.js
     20 *   
     21 * Optionally:
     22 *    jquery.ui.sortable.js
     23 */
     24!function(t,e,i,l,s){var o={};function a(t){return i.translate(t)||t}s.widget("ui.plupload",{widgetEventPrefix:"",contents_bak:"",options:{browse_button_hover:"ui-state-hover",browse_button_active:"ui-state-active",filters:{},buttons:{browse:!0,start:!0,stop:!0},views:{list:!0,thumbs:!1,active:"list",remember:!0},thumb_width:100,thumb_height:60,multiple_queues:!0,dragdrop:!0,autostart:!1,sortable:!1,rename:!1},FILE_COUNT_ERROR:-9001,_create:function(){var t,e=this.element.attr("id");e||(e=i.guid(),this.element.attr("id",e)),this.id=e,this.contents_bak=this.element.html(),(t=this.element).id=t.attr("id"),t.html('<div class="plupload_wrapper"><div class="ui-widget-content plupload_container"><div class="ui-state-default ui-widget-header plupload_header"><div class="plupload_header_content"><div class="plupload_logo"> </div><div class="plupload_header_title">'+a("Select files")+'</div><div class="plupload_header_text">'+a("Add files to the upload queue and click the start button.")+'</div><div class="plupload_view_switch"><input type="radio" id="'+t.id+'_view_list" name="view_mode_'+t.id+'" checked="checked" /><label class="plupload_button" for="'+t.id+'_view_list" data-view="list">'+a("List")+'</label><input type="radio" id="'+t.id+'_view_thumbs" name="view_mode_'+t.id+'" /><label class="plupload_button"  for="'+t.id+'_view_thumbs" data-view="thumbs">'+a("Thumbnails")+'</label></div></div></div><table class="plupload_filelist plupload_filelist_header ui-widget-header"><tr><td class="plupload_cell plupload_file_name">'+a("Filename")+'</td><td class="plupload_cell plupload_file_status">'+a("Status")+'</td><td class="plupload_cell plupload_file_size">'+a("Size")+'</td><td class="plupload_cell plupload_file_action">&nbsp;</td></tr></table><div class="plupload_content"><div class="plupload_droptext">'+a("Drag files here.")+'</div><ul class="plupload_filelist_content"> </ul><div class="plupload_clearer">&nbsp;</div></div><table class="plupload_filelist plupload_filelist_footer ui-widget-header"><tr><td class="plupload_cell plupload_file_name"><div class="plupload_buttons">\x3c!-- Visible --\x3e<a class="plupload_button plupload_add">'+a("Add Files")+'</a>&nbsp;<a class="plupload_button plupload_start">'+a("Start Upload")+'</a>&nbsp;<a class="plupload_button plupload_stop plupload_hidden">'+a("Stop Upload")+'</a>&nbsp;</div><div class="plupload_started plupload_hidden">\x3c!-- Hidden --\x3e<div class="plupload_progress plupload_right"><div class="plupload_progress_container"></div></div><div class="plupload_cell plupload_upload_status"></div><div class="plupload_clearer">&nbsp;</div></div></td><td class="plupload_file_status"><span class="plupload_total_status">0%</span></td><td class="plupload_file_size"><span class="plupload_total_file_size">0 kb</span></td><td class="plupload_file_action"></td></tr></table></div><input class="plupload_count" value="0" type="hidden"></div>'),this.container=s(".plupload_container",this.element).attr("id",e+"_container"),this.content=s(".plupload_content",this.element),s.fn.resizable&&this.container.resizable({handles:"s",minHeight:300}),this.filelist=s(".plupload_filelist_content",this.container).attr({id:e+"_filelist",unselectable:"on"}),this.browse_button=s(".plupload_add",this.container).attr("id",e+"_browse"),this.start_button=s(".plupload_start",this.container).attr("id",e+"_start"),this.stop_button=s(".plupload_stop",this.container).attr("id",e+"_stop"),this.thumbs_switcher=s("#"+e+"_view_thumbs"),this.list_switcher=s("#"+e+"_view_list"),s.ui.button&&(this.browse_button.button({icons:{primary:"ui-icon-circle-plus"},disabled:!0}),this.start_button.button({icons:{primary:"ui-icon-circle-arrow-e"},disabled:!0}),this.stop_button.button({icons:{primary:"ui-icon-circle-close"}}),this.list_switcher.button({text:!1,icons:{secondary:"ui-icon-grip-dotted-horizontal"}}),this.thumbs_switcher.button({text:!1,icons:{secondary:"ui-icon-image"}})),this.progressbar=s(".plupload_progress_container",this.container),s.ui.progressbar&&this.progressbar.progressbar(),this.counter=s(".plupload_count",this.element).attr({id:e+"_count",name:e+"_count"}),this._initUploader()},_initUploader:function(){var t,e=this,n=this.id,d={container:n+"_buttons",browse_button:n+"_browse"};s(".plupload_buttons",this.element).attr("id",n+"_buttons"),e.options.dragdrop&&(this.filelist.parent().attr("id",this.id+"_dropbox"),d.drop_element=this.id+"_dropbox"),this.filelist.on("click",function(t){s(t.target).hasClass("plupload_action_icon")&&(e.removeFile(s(t.target).closest(".plupload_file").attr("id")),t.preventDefault())}),t=this.uploader=o[n]=new i.Uploader(s.extend(this.options,d)),this.options=t.getOption(),e.options.views.thumbs&&(t.settings.required_features.display_media=!0),e.options.max_file_count&&i.extend(t.getOption("filters"),{max_file_count:e.options.max_file_count}),i.addFileFilter("max_file_count",function(t,i,l){t<=this.files.length-(this.total.uploaded+this.total.failed)?(e.browse_button.button("disable"),this.disableBrowse(),this.trigger("Error",{code:e.FILE_COUNT_ERROR,message:a("File count error."),file:i}),l(!1)):l(!0)}),t.bind("Error",function(t,s){var o,n="";switch(o="<strong>"+i.xmlEncode(String(s.message||""))+"</strong>",s.code){case i.FILE_EXTENSION_ERROR:n=l.sprintf(a("File: %s"),s.file.name);break;case i.FILE_SIZE_ERROR:n=l.sprintf(a("File: %s, size: %d, max file size: %d"),s.file.name,i.formatSize(s.file.size),i.formatSize(i.parseSize(t.getOption("filters").max_file_size)));break;case i.FILE_DUPLICATE_ERROR:n=l.sprintf(a("%s already present in the queue."),s.file.name);break;case e.FILE_COUNT_ERROR:n=l.sprintf(a("Upload element accepts only %d file(s) at a time. Extra files were stripped."),t.getOption("filters").max_file_count||0);break;case i.IMAGE_FORMAT_ERROR:n=a("Image format either wrong or not supported.");break;case i.IMAGE_MEMORY_ERROR:n=a("Runtime ran out of available memory.");break;case i.HTTP_ERROR:n=a("Upload URL might be wrong or doesn't exist.")}o+=" <br /><i>"+i.xmlEncode(String(n))+"</i>",e._trigger("error",null,{up:t,error:s}),s.code===i.INIT_ERROR?setTimeout(function(){e.destroy()},1):e.notify("error",o)}),t.bind("PostInit",function(t){e.options.buttons.browse?e.browse_button.button("enable"):(e.browse_button.button("disable").hide(),t.disableBrowse(!0)),e.options.buttons.start||e.start_button.button("disable").hide(),e.options.buttons.stop||e.stop_button.button("disable").hide(),!e.options.unique_names&&e.options.rename&&e._enableRenaming(),e.options.dragdrop&&t.features.dragdrop&&e.filelist.parent().addClass("plupload_dropbox"),e._enableViewSwitcher(),e.start_button.click(function(t){s(this).button("option","disabled")||e.start(),t.preventDefault()}),e.stop_button.click(function(t){e.stop(),t.preventDefault()}),e._trigger("ready",null,{up:t})}),t.init(),t.bind("FileFiltered",function(t,i){e._addFiles(i)}),t.bind("FilesAdded",function(t,i){e._trigger("selected",null,{up:t,files:i}),e.options.sortable&&s.ui.sortable&&e._enableSortingList(),e._trigger("updatelist",null,{filelist:e.filelist}),e.options.autostart&&setTimeout(function(){e.start()},10)}),t.bind("FilesRemoved",function(t,i){s.ui.sortable&&e.options.sortable&&s("tbody",e.filelist).sortable("destroy"),s.each(i,function(t,e){s("#"+e.id).toggle("highlight",function(){s(this).remove()})}),t.files.length&&e.options.sortable&&s.ui.sortable&&e._enableSortingList(),e._trigger("updatelist",null,{filelist:e.filelist}),e._trigger("removed",null,{up:t,files:i})}),t.bind("QueueChanged",function(){e._handleState()}),t.bind("StateChanged",function(t){e._handleState(),i.STARTED===t.state?e._trigger("started",null,{up:this.uploader}):i.STOPPED===t.state&&e._trigger("stopped",null,{up:this.uploader})}),t.bind("UploadFile",function(t,i){e._handleFileStatus(i)}),t.bind("FileUploaded",function(t,i,l){e._handleFileStatus(i),e._trigger("uploaded",null,{up:t,file:i,result:l})}),t.bind("UploadProgress",function(t,i){e._handleFileStatus(i),e._updateTotalProgress(),e._trigger("progress",null,{up:t,file:i})}),t.bind("UploadComplete",function(t,i){e._addFormFields(),e._trigger("complete",null,{up:t,files:i})})},_setOption:function(t,e){var i=this;"buttons"==t&&"object"==typeof e&&((e=s.extend(i.options.buttons,e)).browse?(i.browse_button.button("enable").show(),i.uploader.disableBrowse(!1)):(i.browse_button.button("disable").hide(),i.uploader.disableBrowse(!0)),e.start?i.start_button.button("enable").show():i.start_button.button("disable").hide(),e.stop?i.start_button.button("enable").show():i.stop_button.button("disable").hide()),i.uploader.setOption(t,e)},start:function(){this.uploader.start()},stop:function(){this.uploader.stop()},enable:function(){this.browse_button.button("enable"),this.uploader.disableBrowse(!1)},disable:function(){this.browse_button.button("disable"),this.uploader.disableBrowse(!0)},getFile:function(t){return"number"==typeof t?this.uploader.files[t]:this.uploader.getFile(t)},getFiles:function(){return this.uploader.files},removeFile:function(t){"string"===i.typeOf(t)&&(t=this.getFile(t)),this.uploader.removeFile(t)},clearQueue:function(){this.uploader.splice()},getUploader:function(){return this.uploader},refresh:function(){this.uploader.refresh()},notify:function(t,e){var i=s('<div class="plupload_message"><span class="plupload_message_close ui-icon ui-icon-circle-close" title="'+a("Close")+'"></span><p><span class="ui-icon"></span>'+e+"</p></div>");i.addClass("ui-state-"+("error"===t?"error":"highlight")).find("p .ui-icon").addClass("ui-icon-"+("error"===t?"alert":"info")).end().find(".plupload_message_close").click(function(){i.remove()}).end(),s(".plupload_header",this.container).append(i)},destroy:function(){this.uploader.destroy(),s(".plupload_button",this.element).unbind(),s.ui.button&&s(".plupload_add, .plupload_start, .plupload_stop",this.container).button("destroy"),s.ui.progressbar&&this.progressbar.progressbar("destroy"),s.ui.sortable&&this.options.sortable&&s("tbody",this.filelist).sortable("destroy"),this.element.empty().html(this.contents_bak),this.contents_bak="",s.Widget.prototype.destroy.apply(this)},_handleState:function(){var t=this.uploader,e=t.files.length-(t.total.uploaded+t.total.failed),o=t.getOption("filters").max_file_count||0;i.STARTED===t.state?(s([]).add(this.stop_button).add(".plupload_started").removeClass("plupload_hidden"),this.start_button.button("disable"),this.options.multiple_queues||(this.browse_button.button("disable"),t.disableBrowse()),s(".plupload_upload_status",this.element).html(l.sprintf(a("Uploaded %d/%d files"),t.total.uploaded,t.files.length)),s(".plupload_header_content",this.element).addClass("plupload_header_content_bw")):i.STOPPED===t.state&&(s([]).add(this.stop_button).add(".plupload_started").addClass("plupload_hidden"),e?this.start_button.button("enable"):this.start_button.button("disable"),this.options.multiple_queues&&s(".plupload_header_content",this.element).removeClass("plupload_header_content_bw"),this.options.multiple_queues&&o&&o>e&&(this.browse_button.button("enable"),t.disableBrowse(!1)),this._updateTotalProgress()),0===t.total.queued?s(".ui-button-text",this.browse_button).html(a("Add Files")):s(".ui-button-text",this.browse_button).html(l.sprintf(a("%d files queued"),t.total.queued)),t.refresh()},_handleFileStatus:function(t){var e,l,o=s("#"+t.id);if(o.length){switch(t.status){case i.DONE:e="plupload_done",l="plupload_action_icon ui-icon ui-icon-circle-check";break;case i.FAILED:e="ui-state-error plupload_failed",l="plupload_action_icon ui-icon ui-icon-alert";break;case i.QUEUED:e="plupload_delete",l="plupload_action_icon ui-icon ui-icon-circle-minus";break;case i.UPLOADING:e="ui-state-highlight plupload_uploading",l="plupload_action_icon ui-icon ui-icon-circle-arrow-w";var a=s(".plupload_scroll",this.container),n=a.scrollTop(),d=a.height(),u=o.position().top+o.height();d<u&&a.scrollTop(n+u-d),o.find(".plupload_file_percent").html(t.percent+"%").end().find(".plupload_file_progress").css("width",t.percent+"%").end().find(".plupload_file_size").html(i.formatSize(t.size))}e+=" ui-state-default plupload_file",o.attr("class",e).find(".plupload_action_icon").attr("class",l)}},_updateTotalProgress:function(){var t=this.uploader;this.filelist[0].scrollTop=this.filelist[0].scrollHeight,this.progressbar.progressbar("value",t.total.percent),this.element.find(".plupload_total_status").html(t.total.percent+"%").end().find(".plupload_total_file_size").html(i.formatSize(t.total.size)).end().find(".plupload_upload_status").html(l.sprintf(a("Uploaded %d/%d files"),t.total.uploaded,t.files.length))},_displayThumbs:function(){var t,e,i,o=this,a=0,n=[],d=!1;function u(t,e,i){var l;t.on(e,function(){clearTimeout(l),l=setTimeout(function(){clearTimeout(l),i()},300)})}function r(){var t=Math.floor(o.content.scrollTop()/e)*i;n=s(".plupload_file .plupload_file_thumb",o.filelist).slice(t,t+a).filter(".plupload_thumb_toload").get()}function p(){function l(){"thumbs"===o.view_mode&&(!function(){if(!t||!e){var l=s(".plupload_file:eq(0)",o.filelist);t=l.outerWidth(!0),e=l.outerHeight(!0)}var n=o.content.width(),d=o.content.height();i=Math.floor(n/t),a=i*(Math.ceil(d/e)+1)}(),r(),_())}s.fn.resizable&&u(o.container,"resize",l),u(o.window,"resize",l),u(o.content,"scroll",l),o.element.on("viewchanged selected",l),l()}function _(){var t,e,i;"thumbs"!==o.view_mode||d||(r(),n.length&&(d=!0,t=o.getFile(s(n.shift()).closest(".plupload_file").attr("id")),e=function(){d=!1,_()},(i=new l.Image).onload=function(){var e=s("#"+t.id+" .plupload_file_thumb",o.filelist);this.embed(e[0],{width:o.options.thumb_width,height:o.options.thumb_height,crop:!0,preserveHeaders:!1,swf_url:l.resolveUrl(o.options.flash_swf_url),xap_url:l.resolveUrl(o.options.silverlight_xap_url)})},i.bind("embedded error",function(i){s("#"+t.id,o.filelist).find(".plupload_file_thumb").removeClass("plupload_thumb_loading").addClass("plupload_thumb_"+i.type),this.destroy(),setTimeout(e,1)}),s("#"+t.id,o.filelist).find(".plupload_file_thumb").removeClass("plupload_thumb_toload").addClass("plupload_thumb_loading"),i.load(t.getSource())))}this.options.views.thumbs&&this.element.on("selected",function t(){o.element.off("selected",t),p()})},_addFiles:function(t){var e,o=this,a="";e='<li class="plupload_file ui-state-default plupload_delete" id="{id}" style="width:{thumb_width}px;"><div class="plupload_file_thumb plupload_thumb_toload" style="width: {thumb_width}px; height: {thumb_height}px;"><div class="plupload_file_dummy ui-widget-content" style="line-height: {thumb_height}px;"><span class="ui-state-disabled">{ext} </span></div></div><div class="plupload_file_status"><div class="plupload_file_progress ui-widget-header" style="width: 0%"> </div><span class="plupload_file_percent">{percent} </span></div><div class="plupload_file_name" title="{name}"><span class="plupload_file_name_wrapper">{name} </span></div><div class="plupload_file_action"><div class="plupload_action_icon ui-icon ui-icon-circle-minus"> </div></div><div class="plupload_file_size">{size} </div><div class="plupload_file_fields"> </div></li>',"array"!==i.typeOf(t)&&(t=[t]),s.each(t,function(t,s){var n=l.Mime.getFileExtension(s.name)||"none";a+=e.replace(/\{(\w+)\}/g,function(t,e){switch(e){case"thumb_width":case"thumb_height":return o.options[e];case"size":return i.formatSize(s.size);case"ext":return i.xmlEncode(String(n));default:return i.xmlEncode(String(s[e]||""))}})}),o.filelist.append(a)},_addFormFields:function(){var t=this;s(".plupload_file_fields",this.filelist).html(""),i.each(this.uploader.files,function(e,l){var o="",a=t.id+"_"+l;e.target_name&&(o+='<input type="hidden" name="'+a+'_tmpname" value="'+i.xmlEncode(e.target_name)+'" />'),o+='<input type="hidden" name="'+a+'_name" value="'+i.xmlEncode(e.name)+'" />',o+='<input type="hidden" name="'+a+'_status" value="'+(e.status===i.DONE?"done":"failed")+'" />',s("#"+e.id).find(".plupload_file_fields").html(o)}),this.counter.val(this.uploader.files.length)},_viewChanged:function(t){this.options.views.remember&&s.cookie&&s.cookie("plupload_ui_view",t,{expires:7,path:"/"}),"IE"===l.Env.browser&&l.Env.version<7&&this.content.attr("style",'height:expression(document.getElementById("'+this.id+'_container").clientHeight - '+("list"===t?132:102)+")"),this.container.removeClass("plupload_view_list plupload_view_thumbs").addClass("plupload_view_"+t),this.view_mode=t,this._trigger("viewchanged",null,{view:t})},_enableViewSwitcher:function(){var t,e,l,o=this,a=s(".plupload_view_switch",this.container);i.each(["list","thumbs"],function(t){o.options.views[t]||a.find('[for="'+o.id+"_view_"+t+'"], #'+o.id+"_view_"+t).remove()}),1===(e=a.find(".plupload_button")).length?(a.hide(),t=e.eq(0).data("view"),this._viewChanged(t)):s.ui.button&&e.length>1?(this.options.views.remember&&s.cookie&&(t=s.cookie("plupload_ui_view")),~i.inArray(t,["list","thumbs"])||(t=this.options.views.active),a.show().buttonset().find(".ui-button").click(function(e){t=s(this).data("view"),o._viewChanged(t),e.preventDefault()}),(l=a.find('[for="'+o.id+"_view_"+t+'"]')).length&&l.trigger("click")):(a.show(),this._viewChanged(this.options.views.active)),this.options.views.thumbs&&this._displayThumbs()},_enableRenaming:function(){var t=this;this.filelist.dblclick(function(e){var i,l,o,a=s(e.target),n="";a.hasClass("plupload_file_name_wrapper")&&(o=(i=t.uploader.getFile(a.closest(".plupload_file")[0].id)).name,(l=/^(.+)(\.[^.]+)$/.exec(o))&&(o=l[1],n=l[2]),s('<input class="plupload_file_rename" type="text" />').width(a.width()).insertAfter(a.hide()).val(o).blur(function(){a.show().parent().scrollLeft(0).end().next().remove()}).keydown(function(t){var e=s(this);-1!==s.inArray(t.keyCode,[13,27])&&(t.preventDefault(),13===t.keyCode&&(i.name=e.val()+n,a.text(i.name)),e.blur())})[0].focus())})},_enableSortingList:function(){var t=this;s(".plupload_file",this.filelist).length<2||(s("tbody",this.filelist).sortable("destroy"),this.filelist.sortable({items:".plupload_delete",cancel:"object, .plupload_clearer",stop:function(){var e=[];s.each(s(this).sortable("toArray"),function(i,l){e[e.length]=t.uploader.getFile(l)}),e.unshift(e.length),e.unshift(0),Array.prototype.splice.apply(t.uploader.files,e)}}))}})}(window,document,plupload,mOxie,jQuery);
  • paid-membership/trunk/languages/paid-membership.pot

    r3784838 r3784940  
    33msgid ""
    44msgstr ""
    5 "Project-Id-Version: MicroPayments - Fans Paysite: Paid Creator Subscriptions, Digital Assets, Wallet 4.1.0\n"
     5"Project-Id-Version: MicroPayments - Fans Paysite: Paid Creator Subscriptions, Digital Assets, Wallet 4.1.1\n"
    66"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/paid-membership\n"
    77"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
    … …  
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "POT-Creation-Date: 2026-11-04T21:34:04+00:00\n"
     12"POT-Creation-Date: 2026-11-04T23:15:18+00:00\n"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    1414"X-Generator: WP-CLI 2.12.0\n"
    … …  
    293293
    294294#: inc/class-commerce-review.php:466
    295 #: inc/shortcodes.php:4480
     295#: inc/shortcodes.php:4490
    296296msgid "Review"
    297297msgstr ""
    … …  
    301301#: inc/class-content-catalog.php:329
    302302#: inc/class-subscription-library.php:262
    303 #: paid-membership.php:1023
     303#: paid-membership.php:1029
    304304msgid "Previous"
    305305msgstr ""
    … …  
    309309#: inc/class-content-catalog.php:332
    310310#: inc/class-subscription-library.php:267
    311 #: paid-membership.php:1029
     311#: paid-membership.php:1036
    312312msgid "Next"
    313313msgstr ""
    … …  
    340340#: inc/class-content-catalog.php:241
    341341#: inc/class-content-catalog.php:370
    342 #: inc/shortcodes.php:3759
     342#: inc/shortcodes.php:3769
    343343msgid "Subscription"
    344344msgstr ""
    … …  
    355355#: inc/class-content-cards.php:122
    356356#: inc/class-content-catalog.php:379
    357 #: inc/shortcodes.php:3760
    358 #: paid-membership.php:2268
     357#: inc/shortcodes.php:3770
     358#: paid-membership.php:2275
    359359msgid "Edit"
    360360msgstr ""
    … …  
    381381
    382382#: inc/class-content-catalog.php:242
    383 #: paid-membership.php:890
     383#: paid-membership.php:891
    384384msgid "All"
    385385msgstr ""
    … …  
    394394
    395395#: inc/class-content-catalog.php:245
     396#: paid-membership.php:911
     397msgid "Random"
     398msgstr ""
     399
     400#: inc/class-content-catalog.php:246
     401#: paid-membership.php:906
     402msgid "Rating"
     403msgstr ""
     404
     405#: inc/class-content-catalog.php:246
     406#: paid-membership.php:907
     407msgid "Ratings Number"
     408msgstr ""
     409
     410#: inc/class-content-catalog.php:246
    396411#: paid-membership.php:908
    397 msgid "Random"
    398 msgstr ""
    399 
    400 #: inc/class-content-catalog.php:246
    401 #: paid-membership.php:903
    402 msgid "Rating"
    403 msgstr ""
    404 
    405 #: inc/class-content-catalog.php:246
    406 #: paid-membership.php:904
    407 msgid "Ratings Number"
    408 msgstr ""
    409 
    410 #: inc/class-content-catalog.php:246
    411 #: paid-membership.php:905
    412412msgid "Rate Popularity"
    413413msgstr ""
    … …  
    430430#: inc/class-content-catalog.php:284
    431431#: paid-membership.php:666
    432 #: paid-membership.php:897
     432#: paid-membership.php:900
    433433msgid "Order By"
    434434msgstr ""
    435435
    436436#: inc/class-content-catalog.php:284
    437 #: inc/shortcodes.php:1709
    438 #: inc/shortcodes.php:3741
     437#: inc/shortcodes.php:1719
     438#: inc/shortcodes.php:3751
    439439msgid "Type"
    440440msgstr ""
    … …  
    445445
    446446#: inc/class-content-catalog.php:291
    447 #: inc/shortcodes.php:483
    448 #: inc/shortcodes.php:633
    449 #: inc/shortcodes.php:4595
    450 #: paid-membership.php:917
     447#: inc/shortcodes.php:493
     448#: inc/shortcodes.php:643
     449#: inc/shortcodes.php:4605
     450#: paid-membership.php:920
    451451msgid "Tags"
    452452msgstr ""
    453453
    454454#: inc/class-content-catalog.php:291
    455 #: inc/shortcodes.php:1981
    456 #: inc/shortcodes.php:1982
    457 #: paid-membership.php:922
     455#: inc/shortcodes.php:1991
     456#: inc/shortcodes.php:1992
     457#: paid-membership.php:925
    458458msgid "Name"
    459459msgstr ""
    460460
    461461#: inc/class-content-catalog.php:296
    462 #: paid-membership.php:930
     462#: paid-membership.php:934
    463463msgid "Search"
    464464msgstr ""
    … …  
    491491#: inc/class-content-catalog.php:316
    492492#: inc/options.php:1275
    493 #: inc/shortcodes.php:4580
    494 #: inc/shortcodes.php:4584
     493#: inc/shortcodes.php:4590
     494#: inc/shortcodes.php:4594
    495495msgid "List"
    496496msgstr ""
    … …  
    514514
    515515#: inc/class-content-catalog.php:340
    516 #: inc/shortcodes.php:464
    517 #: inc/shortcodes.php:614
    518 #: inc/shortcodes.php:3092
    519 #: inc/shortcodes.php:4244
    520 #: inc/shortcodes.php:4576
     516#: inc/shortcodes.php:474
     517#: inc/shortcodes.php:624
     518#: inc/shortcodes.php:3102
     519#: inc/shortcodes.php:4254
     520#: inc/shortcodes.php:4586
    521521msgid "Category"
    522522msgstr ""
    … …  
    535535
    536536#: inc/class-content-workspace.php:70
    537 #: inc/shortcodes.php:318
    538 #: inc/shortcodes.php:1487
    539 #: inc/shortcodes.php:1910
    540 #: inc/shortcodes.php:2160
    541 #: inc/shortcodes.php:2858
    542 #: inc/shortcodes.php:3380
    543 #: inc/shortcodes.php:3933
    544 #: inc/shortcodes.php:5253
    545 #: inc/shortcodes.php:5369
    546 #: inc/shortcodes.php:5492
    547 #: paid-membership.php:2367
    548 #: paid-membership.php:2524
    549 #: paid-membership.php:2590
     537#: inc/shortcodes.php:328
     538#: inc/shortcodes.php:1497
     539#: inc/shortcodes.php:1920
     540#: inc/shortcodes.php:2170
     541#: inc/shortcodes.php:2868
     542#: inc/shortcodes.php:3390
     543#: inc/shortcodes.php:3943
     544#: inc/shortcodes.php:5263
     545#: inc/shortcodes.php:5379
     546#: inc/shortcodes.php:5502
     547#: paid-membership.php:2374
     548#: paid-membership.php:2531
     549#: paid-membership.php:2597
    550550msgid "Login"
    551551msgstr ""
    … …  
    601601
    602602#: inc/class-content-workspace.php:93
    603 #: inc/shortcodes.php:3829
    604 #: inc/shortcodes.php:5065
     603#: inc/shortcodes.php:3839
     604#: inc/shortcodes.php:5075
    605605msgid "Record"
    606606msgstr ""
    … …  
    608608#: inc/class-content-workspace.php:94
    609609#: inc/options.php:294
    610 #: inc/shortcodes.php:3210
    611 #: inc/shortcodes.php:3340
    612 #: inc/shortcodes.php:3833
    613 #: inc/shortcodes.php:4364
    614 #: inc/shortcodes.php:4640
    615 #: inc/shortcodes.php:5069
     610#: inc/shortcodes.php:3220
     611#: inc/shortcodes.php:3350
     612#: inc/shortcodes.php:3843
     613#: inc/shortcodes.php:4374
     614#: inc/shortcodes.php:4650
     615#: inc/shortcodes.php:5079
    616616msgid "Setup Subscriptions"
    617617msgstr ""
    … …  
    641641#: inc/class-content-workspace.php:108
    642642#: inc/class-content-workspace.php:147
    643 #: inc/shortcodes.php:5276
    644 #: inc/shortcodes.php:5299
     643#: inc/shortcodes.php:5286
     644#: inc/shortcodes.php:5309
    645645msgid "Unavailable content"
    646646msgstr ""
    … …  
    781781
    782782#: inc/options.php:161
    783 #: inc/shortcodes.php:5417
     783#: inc/shortcodes.php:5427
    784784msgid "Token Packages"
    785785msgstr ""
    … …  
    831831
    832832#: inc/options.php:337
     833#: inc/shortcodes.php:4918
    833834msgid "Documents"
    834835msgstr ""
    … …  
    921922
    922923#: inc/options.php:1971
    923 #: paid-membership.php:1732
    924 #: paid-membership.php:1746
    925 #: paid-membership.php:1756
     924#: paid-membership.php:1739
     925#: paid-membership.php:1753
     926#: paid-membership.php:1763
    926927msgid "Downloads"
    927928msgstr ""
    … …  
    10331034msgstr ""
    10341035
    1035 #: inc/shortcodes.php:318
    1036 #: inc/shortcodes.php:1487
    1037 #: inc/shortcodes.php:1910
    1038 #: inc/shortcodes.php:2160
    1039 #: inc/shortcodes.php:2858
    1040 #: inc/shortcodes.php:3380
    1041 #: inc/shortcodes.php:3933
    1042 #: inc/shortcodes.php:5253
    1043 #: inc/shortcodes.php:5369
    1044 #: inc/shortcodes.php:5492
    1045 #: paid-membership.php:2367
    1046 #: paid-membership.php:2524
    1047 #: paid-membership.php:2590
     1036#: inc/shortcodes.php:207
     1037msgid "Loading downloads..."
     1038msgstr ""
     1039
     1040#: inc/shortcodes.php:328
     1041#: inc/shortcodes.php:1497
     1042#: inc/shortcodes.php:1920
     1043#: inc/shortcodes.php:2170
     1044#: inc/shortcodes.php:2868
     1045#: inc/shortcodes.php:3390
     1046#: inc/shortcodes.php:3943
     1047#: inc/shortcodes.php:5263
     1048#: inc/shortcodes.php:5379
     1049#: inc/shortcodes.php:5502
     1050#: paid-membership.php:2374
     1051#: paid-membership.php:2531
     1052#: paid-membership.php:2597
    10481053msgid "Register"
    10491054msgstr ""
    10501055
    1051 #: inc/shortcodes.php:371
     1056#: inc/shortcodes.php:381
    10521057msgid "Download"
    10531058msgstr ""
    10541059
    1055 #: inc/shortcodes.php:422
     1060#: inc/shortcodes.php:432
    10561061msgid "Login is required to import downloads!"
    10571062msgstr ""
    10581063
    1059 #: inc/shortcodes.php:430
    1060 #: inc/shortcodes.php:584
    1061 #: paid-membership.php:1058
     1064#: inc/shortcodes.php:440
     1065#: inc/shortcodes.php:594
     1066#: paid-membership.php:1065
    10621067msgid "Downloads are disabled from plugin settings!"
    10631068msgstr ""
    10641069
    1065 #: inc/shortcodes.php:434
    1066 #: inc/shortcodes.php:588
    1067 #: paid-membership.php:1226
     1070#: inc/shortcodes.php:444
     1071#: inc/shortcodes.php:598
     1072#: paid-membership.php:1233
    10681073msgid "You do not have permissions to share downloads!"
    10691074msgstr ""
    10701075
    1071 #: inc/shortcodes.php:468
    1072 #: inc/shortcodes.php:472
    1073 #: inc/shortcodes.php:618
    1074 #: inc/shortcodes.php:622
     1076#: inc/shortcodes.php:478
     1077#: inc/shortcodes.php:482
     1078#: inc/shortcodes.php:628
     1079#: inc/shortcodes.php:632
    10751080msgid "collection"
    10761081msgstr ""
    10771082
    1078 #: inc/shortcodes.php:470
     1083#: inc/shortcodes.php:480
    10791084msgid "(comma separated)"
    10801085msgstr ""
    10811086
    1082 #: inc/shortcodes.php:485
    1083 #: inc/shortcodes.php:635
    1084 #: inc/shortcodes.php:3094
    1085 #: inc/shortcodes.php:4303
    1086 #: inc/shortcodes.php:4597
     1087#: inc/shortcodes.php:495
     1088#: inc/shortcodes.php:645
     1089#: inc/shortcodes.php:3104
     1090#: inc/shortcodes.php:4313
     1091#: inc/shortcodes.php:4607
    10871092msgid "Tag(s)"
    10881093msgstr ""
    10891094
    1090 #: inc/shortcodes.php:493
    1091 #: inc/shortcodes.php:643
     1095#: inc/shortcodes.php:503
     1096#: inc/shortcodes.php:653
    10921097msgid "Picture"
    10931098msgstr ""
    10941099
    1095 #: inc/shortcodes.php:501
    1096 #: inc/shortcodes.php:503
    1097 #: inc/shortcodes.php:651
    1098 #: inc/shortcodes.php:653
    1099 #: inc/shortcodes.php:2000
    1100 #: inc/shortcodes.php:4311
    1101 #: inc/shortcodes.php:4603
    1102 #: inc/shortcodes.php:4605
     1100#: inc/shortcodes.php:511
     1101#: inc/shortcodes.php:513
     1102#: inc/shortcodes.php:661
     1103#: inc/shortcodes.php:663
     1104#: inc/shortcodes.php:2010
     1105#: inc/shortcodes.php:4321
     1106#: inc/shortcodes.php:4613
     1107#: inc/shortcodes.php:4615
    11031108msgid "Description"
    11041109msgstr ""
    11051110
    1106 #: inc/shortcodes.php:509
     1111#: inc/shortcodes.php:519
    11071112msgid "Import downloads"
    11081113msgstr ""
    11091114
    1110 #: inc/shortcodes.php:537
     1115#: inc/shortcodes.php:547
    11111116msgid "Default"
    11121117msgstr ""
    11131118
    1114 #: inc/shortcodes.php:558
     1119#: inc/shortcodes.php:568
    11151120msgid "Install Picture Gallery plugin"
    11161121msgstr ""
    11171122
    1118 #: inc/shortcodes.php:570
     1123#: inc/shortcodes.php:580
    11191124msgid "Login is required to add downloads!"
    11201125msgstr ""
    11211126
    1122 #: inc/shortcodes.php:620
     1127#: inc/shortcodes.php:630
    11231128msgid "Collection(s)"
    11241129msgstr ""
    11251130
    1126 #: inc/shortcodes.php:681
     1131#: inc/shortcodes.php:691
    11271132msgid "or Drag & Drop files to this upload area<br>(select rest of options first)"
    11281133msgstr ""
    11291134
    1130 #: inc/shortcodes.php:687
     1135#: inc/shortcodes.php:697
    11311136msgid "Upload Files"
    11321137msgstr ""
    11331138
    1134 #: inc/shortcodes.php:706
     1139#: inc/shortcodes.php:716
    11351140msgid "Add Download: File Upload"
    11361141msgstr ""
    11371142
    1138 #: inc/shortcodes.php:706
     1143#: inc/shortcodes.php:716
    11391144msgid "Files to upload"
    11401145msgstr ""
    11411146
    1142 #: inc/shortcodes.php:716
     1147#: inc/shortcodes.php:726
    11431148msgid "Supported Extensions"
    11441149msgstr ""
    11451150
    1146 #: inc/shortcodes.php:1143
     1151#: inc/shortcodes.php:1153
    11471152msgid "Token package processing is waiting for administrator wallet review."
    11481153msgstr ""
    11491154
    11501155#. translators: %1$d: completed WooCommerce order identifier.
    1151 #: inc/shortcodes.php:1191
     1156#: inc/shortcodes.php:1201
    11521157#, php-format
    11531158msgid "Token package for order %1$d"
    11541159msgstr ""
    11551160
    1156 #: inc/shortcodes.php:1201
     1161#: inc/shortcodes.php:1211
    11571162msgid "A token package needs administrator review before processing can continue."
    11581163msgstr ""
    11591164
    1160 #: inc/shortcodes.php:1202
     1165#: inc/shortcodes.php:1212
    11611166msgid "Token package processing is waiting for a wallet provider."
    11621167msgstr ""
    11631168
    1164 #: inc/shortcodes.php:1203
     1169#: inc/shortcodes.php:1213
    11651170msgid "Token package processing completed."
    11661171msgstr ""
    11671172
    1168 #: inc/shortcodes.php:1244
    1169 #: inc/shortcodes.php:1327
     1173#: inc/shortcodes.php:1254
     1174#: inc/shortcodes.php:1337
     1175#: inc/shortcodes.php:1437
     1176msgid "A subscription update is already running. Please try again."
     1177msgstr ""
     1178
     1179#: inc/shortcodes.php:1363
     1180msgid "Already subscribed!"
     1181msgstr ""
     1182
     1183#: inc/shortcodes.php:1367
     1184msgid "This subscription is unavailable."
     1185msgstr ""
     1186
     1187#: inc/shortcodes.php:1369
     1188msgid "Not enough funds!"
     1189msgstr ""
     1190
     1191#: inc/shortcodes.php:1373
     1192msgid "Subscribed to"
     1193msgstr ""
     1194
     1195#: inc/shortcodes.php:1373
     1196msgid "The payment could not be completed. No subscription was added."
     1197msgstr ""
     1198
     1199#: inc/shortcodes.php:1376
     1200msgid "New subscription from"
     1201msgstr ""
     1202
     1203#: inc/shortcodes.php:1410
     1204msgid "subscribed to"
     1205msgstr ""
     1206
    11701207#: inc/shortcodes.php:1427
    1171 msgid "A subscription update is already running. Please try again."
    1172 msgstr ""
    1173 
    1174 #: inc/shortcodes.php:1353
    1175 msgid "Already subscribed!"
    1176 msgstr ""
    1177 
    1178 #: inc/shortcodes.php:1357
    1179 msgid "This subscription is unavailable."
    1180 msgstr ""
    1181 
    1182 #: inc/shortcodes.php:1359
    1183 msgid "Not enough funds!"
    1184 msgstr ""
    1185 
    1186 #: inc/shortcodes.php:1363
    1187 msgid "Subscribed to"
    1188 msgstr ""
    1189 
    1190 #: inc/shortcodes.php:1363
    1191 msgid "The payment could not be completed. No subscription was added."
    1192 msgstr ""
    1193 
    1194 #: inc/shortcodes.php:1366
    1195 msgid "New subscription from"
    1196 msgstr ""
    1197 
    1198 #: inc/shortcodes.php:1400
    1199 msgid "subscribed to"
    1200 msgstr ""
    1201 
    1202 #: inc/shortcodes.php:1417
    12031208msgid "Subscription was setup."
    12041209msgstr ""
    12051210
    1206 #: inc/shortcodes.php:1452
     1211#: inc/shortcodes.php:1462
    12071212msgid "Subscription not found!"
    12081213msgstr ""
    12091214
    1210 #: inc/shortcodes.php:1461
     1215#: inc/shortcodes.php:1471
    12111216msgid "Renewal was cancelled."
    12121217msgstr ""
    12131218
    1214 #: inc/shortcodes.php:1487
    1215 #: inc/shortcodes.php:1910
     1219#: inc/shortcodes.php:1497
     1220#: inc/shortcodes.php:1920
    12161221msgid "Login to Manage!"
    12171222msgstr ""
    12181223
    1219 #: inc/shortcodes.php:1514
    1220 #: inc/shortcodes.php:1841
     1224#: inc/shortcodes.php:1524
     1225#: inc/shortcodes.php:1851
    12211226msgid "Until"
    12221227msgstr ""
    12231228
    1224 #: inc/shortcodes.php:1514
    1225 #: inc/shortcodes.php:1841
     1229#: inc/shortcodes.php:1524
     1230#: inc/shortcodes.php:1851
    12261231msgid "Recurring"
    12271232msgstr ""
    12281233
    1229 #: inc/shortcodes.php:1523
    1230 #: inc/shortcodes.php:1850
    1231 #: inc/shortcodes.php:2241
     1234#: inc/shortcodes.php:1533
     1235#: inc/shortcodes.php:1860
     1236#: inc/shortcodes.php:2251
    12321237msgid "Cancel"
    12331238msgstr ""
    12341239
    1235 #: inc/shortcodes.php:1523
    1236 #: inc/shortcodes.php:1850
     1240#: inc/shortcodes.php:1533
     1241#: inc/shortcodes.php:1860
    12371242msgid "One Time"
    12381243msgstr ""
    12391244
    1240 #: inc/shortcodes.php:1537
    1241 #: inc/shortcodes.php:1632
    1242 #: inc/shortcodes.php:1852
    1243 #: inc/shortcodes.php:1863
    1244 #: paid-membership.php:2327
     1245#: inc/shortcodes.php:1547
     1246#: inc/shortcodes.php:1642
     1247#: inc/shortcodes.php:1862
     1248#: inc/shortcodes.php:1873
     1249#: paid-membership.php:2334
    12451250msgid "tier"
    12461251msgstr ""
    12471252
    1248 #: inc/shortcodes.php:1540
     1253#: inc/shortcodes.php:1550
    12491254msgid "You have no subscriptions, yet. If you subscribe to any creators, your subscriptions will show here."
    12501255msgstr ""
    12511256
    1252 #: inc/shortcodes.php:1595
     1257#: inc/shortcodes.php:1605
    12531258msgid "Stats"
    12541259msgstr ""
    12551260
    1256 #: inc/shortcodes.php:1625
     1261#: inc/shortcodes.php:1635
    12571262msgid "Subscribers"
    12581263msgstr ""
    12591264
    1260 #: inc/shortcodes.php:1626
    1261 #: inc/shortcodes.php:1725
     1265#: inc/shortcodes.php:1636
     1266#: inc/shortcodes.php:1735
    12621267msgid "Total"
    12631268msgstr ""
    12641269
    1265 #: inc/shortcodes.php:1647
     1270#: inc/shortcodes.php:1657
    12661271msgid "No subscribers"
    12671272msgstr ""
    12681273
    1269 #: inc/shortcodes.php:1654
     1274#: inc/shortcodes.php:1664
    12701275msgid "Earnings"
    12711276msgstr ""
    12721277
    1273 #: inc/shortcodes.php:1661
     1278#: inc/shortcodes.php:1671
    12741279msgid "Last 24h"
    12751280msgstr ""
    12761281
    1277 #: inc/shortcodes.php:1662
     1282#: inc/shortcodes.php:1672
    12781283msgid "Last 7 days"
    12791284msgstr ""
    12801285
    1281 #: inc/shortcodes.php:1663
     1286#: inc/shortcodes.php:1673
    12821287msgid "Past 30 days"
    12831288msgstr ""
    12841289
    1285 #: inc/shortcodes.php:1664
     1290#: inc/shortcodes.php:1674
    12861291msgid "Past 12 Months"
    12871292msgstr ""
    12881293
    1289 #: inc/shortcodes.php:1665
     1294#: inc/shortcodes.php:1675
    12901295msgid "Previous Month"
    12911296msgstr ""
    12921297
    1293 #: inc/shortcodes.php:1666
     1298#: inc/shortcodes.php:1676
    12941299msgid "Month to Date"
    12951300msgstr ""
    12961301
    1297 #: inc/shortcodes.php:1667
     1302#: inc/shortcodes.php:1677
    12981303msgid "Previous Year"
    12991304msgstr ""
    13001305
    1301 #: inc/shortcodes.php:1668
     1306#: inc/shortcodes.php:1678
    13021307msgid "Year to Date"
    13031308msgstr ""
    13041309
    1305 #: inc/shortcodes.php:1669
     1310#: inc/shortcodes.php:1679
    13061311msgid "All Time"
    13071312msgstr ""
    13081313
    1309 #: inc/shortcodes.php:1673
     1314#: inc/shortcodes.php:1683
    13101315msgid "Subscriptions"
    13111316msgstr ""
    13121317
    1313 #: inc/shortcodes.php:1674
     1318#: inc/shortcodes.php:1684
    13141319msgid "Digital Sales"
    13151320msgstr ""
    13161321
    1317 #: inc/shortcodes.php:1675
     1322#: inc/shortcodes.php:1685
    13181323msgid "Digital Co-Sales"
    13191324msgstr ""
    13201325
    1321 #: inc/shortcodes.php:1676
    1322 #: inc/shortcodes.php:3262
    1323 #: inc/shortcodes.php:4385
    1324 #: inc/shortcodes.php:4661
     1326#: inc/shortcodes.php:1686
     1327#: inc/shortcodes.php:3272
     1328#: inc/shortcodes.php:4395
     1329#: inc/shortcodes.php:4671
    13251330msgid "Donations"
    13261331msgstr ""
    13271332
    1328 #: inc/shortcodes.php:1677
     1333#: inc/shortcodes.php:1687
    13291334msgid "Private Videochat"
    13301335msgstr ""
    13311336
    1332 #: inc/shortcodes.php:1678
     1337#: inc/shortcodes.php:1688
    13331338msgid "Group Videochat"
    13341339msgstr ""
    13351340
    1336 #: inc/shortcodes.php:1679
     1341#: inc/shortcodes.php:1689
    13371342msgid "Videochat Tips"
    13381343msgstr ""
    13391344
    1340 #: inc/shortcodes.php:1680
     1345#: inc/shortcodes.php:1690
    13411346msgid "Paid Messages"
    13421347msgstr ""
    13431348
    1344 #: inc/shortcodes.php:1681
     1349#: inc/shortcodes.php:1691
    13451350msgid "Paid Votes"
    13461351msgstr ""
    13471352
    1348 #: inc/shortcodes.php:1682
     1353#: inc/shortcodes.php:1692
    13491354msgid "Support Conversations"
    13501355msgstr ""
    13511356
    1352 #: inc/shortcodes.php:1683
     1357#: inc/shortcodes.php:1693
    13531358msgid "Support Messages"
    13541359msgstr ""
    13551360
    1356 #: inc/shortcodes.php:1805
     1361#: inc/shortcodes.php:1815
    13571362msgid "The subscription request could not be verified."
    13581363msgstr ""
    13591364
    1360 #: inc/shortcodes.php:1818
     1365#: inc/shortcodes.php:1828
    13611366msgid "Confirm subscription"
    13621367msgstr ""
    13631368
    1364 #: inc/shortcodes.php:1818
     1369#: inc/shortcodes.php:1828
    13651370msgid "Cancel renewal"
    13661371msgstr ""
    13671372
    1368 #: inc/shortcodes.php:1857
     1373#: inc/shortcodes.php:1867
    13691374msgid "Premium content can be accessed by subscription."
    13701375msgstr ""
    13711376
    1372 #: inc/shortcodes.php:1874
    1373 #: paid-membership.php:2187
     1377#: inc/shortcodes.php:1884
     1378#: paid-membership.php:2194
    13741379msgid "Subscribe"
    13751380msgstr ""
    13761381
    1377 #: inc/shortcodes.php:1885
     1382#: inc/shortcodes.php:1895
    13781383msgid "Buy"
    13791384msgstr ""
    13801385
    1381 #: inc/shortcodes.php:1891
    1382 #: inc/shortcodes.php:2015
    1383 #: inc/shortcodes.php:3210
    1384 #: inc/shortcodes.php:4364
    1385 #: inc/shortcodes.php:4640
    1386 msgid "Higher tier subscriptions include access to content from lower tiers."
    1387 msgstr ""
    1388 
    1389 #: inc/shortcodes.php:1985
    1390 #: inc/shortcodes.php:1986
    1391 #: inc/shortcodes.php:3759
    1392 msgid "Price"
    1393 msgstr ""
    1394 
    1395 #: inc/shortcodes.php:1989
    1396 #: paid-membership.php:2367
    1397 #: paid-membership.php:2399
    1398 #: paid-membership.php:2424
    1399 #: paid-membership.php:2449
    1400 #: paid-membership.php:2457
    1401 #: paid-membership.php:2470
    1402 #: paid-membership.php:2473
    1403 #: paid-membership.php:2475
    1404 #: paid-membership.php:2491
    1405 #: paid-membership.php:2507
    1406 msgid "Duration"
    1407 msgstr ""
    1408 
    1409 #: inc/shortcodes.php:2004
    1410 msgid "Remove"
    1411 msgstr ""
    1412 
    1413 #: inc/shortcodes.php:2015
    1414 #: inc/shortcodes.php:3337
    1415 #: inc/shortcodes.php:4886
    1416 #: inc/shortcodes.php:4924
    1417 #: inc/shortcodes.php:5053
    1418 #: paid-membership.php:2271
    1419 msgid "My Assets"
    1420 msgstr ""
    1421 
    1422 #: inc/shortcodes.php:2108
    1423 #: inc/shortcodes.php:3266
    1424 #: inc/shortcodes.php:4389
    1425 #: inc/shortcodes.php:4665
    1426 msgid "Crowdfunding"
    1427 msgstr ""
    1428 
    1429 #: inc/shortcodes.php:2109
    1430 msgid "Funders"
    1431 msgstr ""
    1432 
    1433 #: inc/shortcodes.php:2160
    1434 msgid "Login to Donate"
    1435 msgstr ""
    1436 
    1437 #: inc/shortcodes.php:2214
    1438 #: inc/shortcodes.php:2223
    1439 #: inc/shortcodes.php:2240
    1440 msgid "Donate"
    1441 msgstr ""
    1442 
    1443 #: inc/shortcodes.php:2264
    1444 msgid "Fund"
    1445 msgstr ""
    1446 
    1447 #: inc/shortcodes.php:2264
    1448 msgid "Donate to"
    1449 msgstr ""
    1450 
    1451 #: inc/shortcodes.php:2304
    1452 msgid "Donation amount must be greater than zero."
    1453 msgstr ""
    1454 
    1455 #: inc/shortcodes.php:2347
    1456 msgid "Donation"
    1457 msgstr ""
    1458 
    1459 #: inc/shortcodes.php:2348
    1460 msgid "donated"
    1461 msgstr ""
    1462 
    1463 #: inc/shortcodes.php:2353
    1464 msgid "Funding"
    1465 msgstr ""
    1466 
    1467 #: inc/shortcodes.php:2354
    1468 msgid "funded"
    1469 msgstr ""
    1470 
    1471 #: inc/shortcodes.php:2359
    1472 msgid "Not enough funds available to make donation!"
    1473 msgstr ""
    1474 
    1475 #: inc/shortcodes.php:2370
    1476 msgid "The payment could not be completed. No donation was recorded."
    1477 msgstr ""
    1478 
    1479 #: inc/shortcodes.php:2408
    1480 msgid "completed"
    1481 msgstr ""
    1482 
    1483 #: inc/shortcodes.php:2409
    1484 msgid "Reload page to see update!"
    1485 msgstr ""
    1486 
    1487 #: inc/shortcodes.php:2516
    1488 msgid "Linked product ownership could not be verified. Ask an administrator to review the content-product link."
    1489 msgstr ""
    1490 
    1491 #: inc/shortcodes.php:2549
    1492 msgid "added a new product"
    1493 msgstr ""
    1494 
    1495 #: inc/shortcodes.php:2644
    1496 msgid "Product was updated."
    1497 msgstr ""
    1498 
    1499 #: inc/shortcodes.php:2823
    1500 #: inc/shortcodes.php:2841
    1501 msgid "The picture could not be uploaded. Please select it again."
    1502 msgstr ""
    1503 
    1504 #: inc/shortcodes.php:2831
    1505 msgid "Please select a valid JPEG, PNG or GIF picture."
    1506 msgstr ""
    1507 
    1508 #: inc/shortcodes.php:2834
    1509 msgid "The picture exceeds the available upload allowance."
    1510 msgstr ""
    1511 
    1512 #: inc/shortcodes.php:2890
    1513 msgid "This content type is not available in the creator editor."
    1514 msgstr ""
    1515 
    1516 #: inc/shortcodes.php:2908
    1517 msgid "Editing"
    1518 msgstr ""
    1519 
    1520 #: inc/shortcodes.php:2948
    1521 msgid "Coauthor removed:"
    1522 msgstr ""
    1523 
    1524 #: inc/shortcodes.php:2962
    1525 msgid "Coauthor user not found:"
    1526 msgstr ""
    1527 
    1528 #: inc/shortcodes.php:2975
    1529 msgid "Total coauthor percent exceeds 100%:"
    1530 msgstr ""
    1531 
    1532 #: inc/shortcodes.php:2979
    1533 msgid "Coauthor added:"
    1534 msgstr ""
    1535 
    1536 #: inc/shortcodes.php:3081
    1537 msgid "Use the media plugin’s editor to submit changes to published content for review. Pricing and subscription settings remain available here."
    1538 msgstr ""
    1539 
    1540 #: inc/shortcodes.php:3083
    1541 #: inc/shortcodes.php:4270
    1542 #: inc/shortcodes.php:4273
    1543 #: inc/shortcodes.php:4276
    1544 #: paid-membership.php:654
    1545 #: paid-membership.php:959
    1546 msgid "Title"
    1547 msgstr ""
    1548 
    1549 #: inc/shortcodes.php:3130
    1550 msgid "Description Content"
    1551 msgstr ""
    1552 
    1553 #: inc/shortcodes.php:3155
    1554 msgid "Featured Image (Optional)"
    1555 msgstr ""
    1556 
    1557 #: inc/shortcodes.php:3173
    1558 msgid "Remove Image(s)"
    1559 msgstr ""
    1560 
    1561 #: inc/shortcodes.php:3180
    1562 msgid "Comments"
    1563 msgstr ""
    1564 
    1565 #: inc/shortcodes.php:3181
    1566 msgid "Open"
    1567 msgstr ""
    1568 
    1569 #: inc/shortcodes.php:3182
    1570 msgid "Closed"
    1571 msgstr ""
    1572 
    1573 #: inc/shortcodes.php:3186
    1574 #: inc/shortcodes.php:3188
    1575 #: inc/shortcodes.php:3741
    1576 msgid "Status"
    1577 msgstr ""
    1578 
    1579 #: inc/shortcodes.php:3186
    1580 msgid "Pending Review"
    1581 msgstr ""
    1582 
    1583 #: inc/shortcodes.php:3189
    1584 msgid "Public"
    1585 msgstr ""
    1586 
    1587 #: inc/shortcodes.php:3189
    1588 msgid "Submit for review"
    1589 msgstr ""
    1590 
    1591 #: inc/shortcodes.php:3190
    1592 msgid "Private"
    1593 msgstr ""
    1594 
    1595 #: inc/shortcodes.php:3191
    1596 msgid "Draft"
    1597 msgstr ""
    1598 
    1599 #: inc/shortcodes.php:3192
    1600 msgid "Trash"
    1601 msgstr ""
    1602 
    1603 #: inc/shortcodes.php:3193
    1604 msgid "Move item to Trash for removal. Trash can be permanently removed by admins."
    1605 msgstr ""
    1606 
    1607 #: inc/shortcodes.php:3197
    1608 #: inc/shortcodes.php:3742
    1609 #: inc/shortcodes.php:4352
    1610 #: inc/shortcodes.php:4628
    1611 msgid "Monetization"
    1612 msgstr ""
    1613 
    1614 #: inc/shortcodes.php:3201
    1615 #: inc/shortcodes.php:4355
    1616 #: inc/shortcodes.php:4631
    1617 msgid "Subscription Tier"
    1618 msgstr ""
    1619 
    1620 #: inc/shortcodes.php:3202
    1621 #: inc/shortcodes.php:4356
    1622 #: inc/shortcodes.php:4632
    1623 msgid "None"
    1624 msgstr ""
    1625 
     1386#: inc/shortcodes.php:1901
     1387#: inc/shortcodes.php:2025
    16261388#: inc/shortcodes.php:3220
    16271389#: inc/shortcodes.php:4374
    16281390#: inc/shortcodes.php:4650
     1391msgid "Higher tier subscriptions include access to content from lower tiers."
     1392msgstr ""
     1393
     1394#: inc/shortcodes.php:1995
     1395#: inc/shortcodes.php:1996
     1396#: inc/shortcodes.php:3769
     1397msgid "Price"
     1398msgstr ""
     1399
     1400#: inc/shortcodes.php:1999
     1401#: paid-membership.php:2374
     1402#: paid-membership.php:2406
     1403#: paid-membership.php:2431
     1404#: paid-membership.php:2456
     1405#: paid-membership.php:2464
     1406#: paid-membership.php:2477
     1407#: paid-membership.php:2480
     1408#: paid-membership.php:2482
     1409#: paid-membership.php:2498
     1410#: paid-membership.php:2514
     1411msgid "Duration"
     1412msgstr ""
     1413
     1414#: inc/shortcodes.php:2014
     1415msgid "Remove"
     1416msgstr ""
     1417
     1418#: inc/shortcodes.php:2025
     1419#: inc/shortcodes.php:3347
     1420#: inc/shortcodes.php:4896
     1421#: inc/shortcodes.php:4936
     1422#: inc/shortcodes.php:5063
     1423#: paid-membership.php:2278
     1424msgid "My Assets"
     1425msgstr ""
     1426
     1427#: inc/shortcodes.php:2118
     1428#: inc/shortcodes.php:3276
     1429#: inc/shortcodes.php:4399
     1430#: inc/shortcodes.php:4675
     1431msgid "Crowdfunding"
     1432msgstr ""
     1433
     1434#: inc/shortcodes.php:2119
     1435msgid "Funders"
     1436msgstr ""
     1437
     1438#: inc/shortcodes.php:2170
     1439msgid "Login to Donate"
     1440msgstr ""
     1441
     1442#: inc/shortcodes.php:2224
     1443#: inc/shortcodes.php:2233
     1444#: inc/shortcodes.php:2250
     1445msgid "Donate"
     1446msgstr ""
     1447
     1448#: inc/shortcodes.php:2274
     1449msgid "Fund"
     1450msgstr ""
     1451
     1452#: inc/shortcodes.php:2274
     1453msgid "Donate to"
     1454msgstr ""
     1455
     1456#: inc/shortcodes.php:2314
     1457msgid "Donation amount must be greater than zero."
     1458msgstr ""
     1459
     1460#: inc/shortcodes.php:2357
     1461msgid "Donation"
     1462msgstr ""
     1463
     1464#: inc/shortcodes.php:2358
     1465msgid "donated"
     1466msgstr ""
     1467
     1468#: inc/shortcodes.php:2363
     1469msgid "Funding"
     1470msgstr ""
     1471
     1472#: inc/shortcodes.php:2364
     1473msgid "funded"
     1474msgstr ""
     1475
     1476#: inc/shortcodes.php:2369
     1477msgid "Not enough funds available to make donation!"
     1478msgstr ""
     1479
     1480#: inc/shortcodes.php:2380
     1481msgid "The payment could not be completed. No donation was recorded."
     1482msgstr ""
     1483
     1484#: inc/shortcodes.php:2418
     1485msgid "completed"
     1486msgstr ""
     1487
     1488#: inc/shortcodes.php:2419
     1489msgid "Reload page to see update!"
     1490msgstr ""
     1491
     1492#: inc/shortcodes.php:2526
     1493msgid "Linked product ownership could not be verified. Ask an administrator to review the content-product link."
     1494msgstr ""
     1495
     1496#: inc/shortcodes.php:2559
     1497msgid "added a new product"
     1498msgstr ""
     1499
     1500#: inc/shortcodes.php:2654
     1501msgid "Product was updated."
     1502msgstr ""
     1503
     1504#: inc/shortcodes.php:2833
     1505#: inc/shortcodes.php:2851
     1506msgid "The picture could not be uploaded. Please select it again."
     1507msgstr ""
     1508
     1509#: inc/shortcodes.php:2841
     1510msgid "Please select a valid JPEG, PNG or GIF picture."
     1511msgstr ""
     1512
     1513#: inc/shortcodes.php:2844
     1514msgid "The picture exceeds the available upload allowance."
     1515msgstr ""
     1516
     1517#: inc/shortcodes.php:2900
     1518msgid "This content type is not available in the creator editor."
     1519msgstr ""
     1520
     1521#: inc/shortcodes.php:2918
     1522msgid "Editing"
     1523msgstr ""
     1524
     1525#: inc/shortcodes.php:2958
     1526msgid "Coauthor removed:"
     1527msgstr ""
     1528
     1529#: inc/shortcodes.php:2972
     1530msgid "Coauthor user not found:"
     1531msgstr ""
     1532
     1533#: inc/shortcodes.php:2985
     1534msgid "Total coauthor percent exceeds 100%:"
     1535msgstr ""
     1536
     1537#: inc/shortcodes.php:2989
     1538msgid "Coauthor added:"
     1539msgstr ""
     1540
     1541#: inc/shortcodes.php:3091
     1542msgid "Use the media plugin’s editor to submit changes to published content for review. Pricing and subscription settings remain available here."
     1543msgstr ""
     1544
     1545#: inc/shortcodes.php:3093
     1546#: inc/shortcodes.php:4280
     1547#: inc/shortcodes.php:4283
     1548#: inc/shortcodes.php:4286
     1549#: paid-membership.php:654
     1550#: paid-membership.php:964
     1551msgid "Title"
     1552msgstr ""
     1553
     1554#: inc/shortcodes.php:3140
     1555msgid "Description Content"
     1556msgstr ""
     1557
     1558#: inc/shortcodes.php:3165
     1559msgid "Featured Image (Optional)"
     1560msgstr ""
     1561
     1562#: inc/shortcodes.php:3183
     1563msgid "Remove Image(s)"
     1564msgstr ""
     1565
     1566#: inc/shortcodes.php:3190
     1567msgid "Comments"
     1568msgstr ""
     1569
     1570#: inc/shortcodes.php:3191
     1571msgid "Open"
     1572msgstr ""
     1573
     1574#: inc/shortcodes.php:3192
     1575msgid "Closed"
     1576msgstr ""
     1577
     1578#: inc/shortcodes.php:3196
     1579#: inc/shortcodes.php:3198
     1580#: inc/shortcodes.php:3751
     1581msgid "Status"
     1582msgstr ""
     1583
     1584#: inc/shortcodes.php:3196
     1585msgid "Pending Review"
     1586msgstr ""
     1587
     1588#: inc/shortcodes.php:3199
     1589msgid "Public"
     1590msgstr ""
     1591
     1592#: inc/shortcodes.php:3199
     1593msgid "Submit for review"
     1594msgstr ""
     1595
     1596#: inc/shortcodes.php:3200
     1597msgid "Private"
     1598msgstr ""
     1599
     1600#: inc/shortcodes.php:3201
     1601msgid "Draft"
     1602msgstr ""
     1603
     1604#: inc/shortcodes.php:3202
     1605msgid "Trash"
     1606msgstr ""
     1607
     1608#: inc/shortcodes.php:3203
     1609msgid "Move item to Trash for removal. Trash can be permanently removed by admins."
     1610msgstr ""
     1611
     1612#: inc/shortcodes.php:3207
     1613#: inc/shortcodes.php:3752
     1614#: inc/shortcodes.php:4362
     1615#: inc/shortcodes.php:4638
     1616msgid "Monetization"
     1617msgstr ""
     1618
     1619#: inc/shortcodes.php:3211
     1620#: inc/shortcodes.php:4365
     1621#: inc/shortcodes.php:4641
     1622msgid "Subscription Tier"
     1623msgstr ""
     1624
     1625#: inc/shortcodes.php:3212
     1626#: inc/shortcodes.php:4366
     1627#: inc/shortcodes.php:4642
     1628msgid "None"
     1629msgstr ""
     1630
     1631#: inc/shortcodes.php:3230
     1632#: inc/shortcodes.php:4384
     1633#: inc/shortcodes.php:4660
    16291634msgid "Sell Price"
    16301635msgstr ""
    16311636
    1632 #: inc/shortcodes.php:3221
    1633 #: inc/shortcodes.php:4375
    1634 #: inc/shortcodes.php:4651
     1637#: inc/shortcodes.php:3231
     1638#: inc/shortcodes.php:4385
     1639#: inc/shortcodes.php:4661
    16351640msgid "Users need to pay this price to access this content. Set 0 for free access or by subscription. An individual price can also be configured for subscription items: If content is part of a subscription tier, client can opt to get the author subscription instead of purchasing content individually."
    16361641msgstr ""
    16371642
    1638 #: inc/shortcodes.php:3224
    1639 #: inc/shortcodes.php:4378
    1640 #: inc/shortcodes.php:4654
    1641 msgid "Access Duration"
    1642 msgstr ""
    1643 
    1644 #: inc/shortcodes.php:3226
    1645 #: inc/shortcodes.php:4380
    1646 #: inc/shortcodes.php:4656
    1647 msgid "Set 720 for 30 days, 336 for 2 weeks, 168 for 1 week, 24 for 1 day, 0 for unlimited time access (one time fee)."
    1648 msgstr ""
    1649 
    1650 #: inc/shortcodes.php:3237
    1651 #: paid-membership.php:2222
    1652 msgid "Coauthors"
    1653 msgstr ""
    1654 
    1655 #: inc/shortcodes.php:3251
    1656 msgid "Check and save to remove coauthors. Total distributed:"
    1657 msgstr ""
    1658 
    1659 #: inc/shortcodes.php:3256
    1660 msgid "Add New Coauthor"
    1661 msgstr ""
    1662 
    1663 #: inc/shortcodes.php:3257
    1664 msgid "Username or email of user"
    1665 msgstr ""
    1666 
    1667 #: inc/shortcodes.php:3257
    1668 msgid "Username or email of user to share earnings with."
    1669 msgstr ""
    1670 
    1671 #: inc/shortcodes.php:3257
    1672 msgid "Percent"
    1673 msgstr ""
    1674 
    1675 #: inc/shortcodes.php:3257
    1676 msgid "Percent of earnings to share with coauthor. Sum of all coauthor percents should not be over 100."
    1677 msgstr ""
    1678 
    1679 #: inc/shortcodes.php:3263
    1680 #: inc/shortcodes.php:4386
    1681 #: inc/shortcodes.php:4662
    1682 msgid "Enabled"
    1683 msgstr ""
    1684 
    1685 #: inc/shortcodes.php:3264
    1686 #: inc/shortcodes.php:4387
    1687 #: inc/shortcodes.php:4663
    1688 msgid "Disabled"
    1689 msgstr ""
    1690 
    1691 #: inc/shortcodes.php:3265
     1643#: inc/shortcodes.php:3234
    16921644#: inc/shortcodes.php:4388
    16931645#: inc/shortcodes.php:4664
    1694 msgid "Goal"
    1695 msgstr ""
    1696 
    1697 #: inc/shortcodes.php:3267
     1646msgid "Access Duration"
     1647msgstr ""
     1648
     1649#: inc/shortcodes.php:3236
    16981650#: inc/shortcodes.php:4390
    16991651#: inc/shortcodes.php:4666
    1700 msgid "Goal will show progress and Crowdfunding will also publicly list all funders."
    1701 msgstr ""
    1702 
    1703 #: inc/shortcodes.php:3269
    1704 #: inc/shortcodes.php:4392
    1705 #: inc/shortcodes.php:4668
    1706 msgid "Goal Amount"
     1652msgid "Set 720 for 30 days, 336 for 2 weeks, 168 for 1 week, 24 for 1 day, 0 for unlimited time access (one time fee)."
     1653msgstr ""
     1654
     1655#: inc/shortcodes.php:3247
     1656#: paid-membership.php:2229
     1657msgid "Coauthors"
     1658msgstr ""
     1659
     1660#: inc/shortcodes.php:3261
     1661msgid "Check and save to remove coauthors. Total distributed:"
     1662msgstr ""
     1663
     1664#: inc/shortcodes.php:3266
     1665msgid "Add New Coauthor"
     1666msgstr ""
     1667
     1668#: inc/shortcodes.php:3267
     1669msgid "Username or email of user"
     1670msgstr ""
     1671
     1672#: inc/shortcodes.php:3267
     1673msgid "Username or email of user to share earnings with."
     1674msgstr ""
     1675
     1676#: inc/shortcodes.php:3267
     1677msgid "Percent"
     1678msgstr ""
     1679
     1680#: inc/shortcodes.php:3267
     1681msgid "Percent of earnings to share with coauthor. Sum of all coauthor percents should not be over 100."
    17071682msgstr ""
    17081683
    … …  
    17101685#: inc/shortcodes.php:4396
    17111686#: inc/shortcodes.php:4672
    1712 msgid "Goal Name"
     1687msgid "Enabled"
     1688msgstr ""
     1689
     1690#: inc/shortcodes.php:3274
     1691#: inc/shortcodes.php:4397
     1692#: inc/shortcodes.php:4673
     1693msgid "Disabled"
     1694msgstr ""
     1695
     1696#: inc/shortcodes.php:3275
     1697#: inc/shortcodes.php:4398
     1698#: inc/shortcodes.php:4674
     1699msgid "Goal"
    17131700msgstr ""
    17141701
    … …  
    17161703#: inc/shortcodes.php:4400
    17171704#: inc/shortcodes.php:4676
    1718 msgid "Goal Description"
     1705msgid "Goal will show progress and Crowdfunding will also publicly list all funders."
    17191706msgstr ""
    17201707
    … …  
    17221709#: inc/shortcodes.php:4402
    17231710#: inc/shortcodes.php:4678
     1711msgid "Goal Amount"
     1712msgstr ""
     1713
     1714#: inc/shortcodes.php:3283
     1715#: inc/shortcodes.php:4406
     1716#: inc/shortcodes.php:4682
     1717msgid "Goal Name"
     1718msgstr ""
     1719
     1720#: inc/shortcodes.php:3287
     1721#: inc/shortcodes.php:4410
     1722#: inc/shortcodes.php:4686
     1723msgid "Goal Description"
     1724msgstr ""
     1725
     1726#: inc/shortcodes.php:3289
     1727#: inc/shortcodes.php:4412
     1728#: inc/shortcodes.php:4688
    17241729msgid "Crowdfunding Stake"
    17251730msgstr ""
    17261731
    1727 #: inc/shortcodes.php:3280
    1728 #: inc/shortcodes.php:4403
    1729 #: inc/shortcodes.php:4679
     1732#: inc/shortcodes.php:3290
     1733#: inc/shortcodes.php:4413
     1734#: inc/shortcodes.php:4689
    17301735msgid "Crowdfunding percent for backers."
    17311736msgstr ""
    17321737
    1733 #: inc/shortcodes.php:3327
     1738#: inc/shortcodes.php:3337
    17341739msgid "More"
    17351740msgstr ""
    17361741
    1737 #: inc/shortcodes.php:3330
    1738 #: inc/shortcodes.php:3764
    1739 #: inc/shortcodes.php:3767
     1742#: inc/shortcodes.php:3340
     1743#: inc/shortcodes.php:3774
     1744#: inc/shortcodes.php:3777
    17401745msgid "Announce"
    17411746msgstr ""
    17421747
    1743 #: inc/shortcodes.php:3330
     1748#: inc/shortcodes.php:3340
    17441749msgid "PeepSo Stream"
    17451750msgstr ""
    17461751
    1747 #: inc/shortcodes.php:3333
     1752#: inc/shortcodes.php:3343
    17481753msgid "Share this on your activity feed"
    17491754msgstr ""
    17501755
    1751 #: inc/shortcodes.php:3333
     1756#: inc/shortcodes.php:3343
    17521757msgid "Share to Feed"
    17531758msgstr ""
    17541759
    1755 #: inc/shortcodes.php:3413
    1756 #: inc/shortcodes.php:5053
     1760#: inc/shortcodes.php:3423
     1761#: inc/shortcodes.php:5063
    17571762msgid "My Digital Content Assets"
    17581763msgstr ""
    17591764
    1760 #: inc/shortcodes.php:3460
    1761 #: inc/shortcodes.php:3764
    1762 #: inc/shortcodes.php:3767
    1763 #: inc/shortcodes.php:3818
    1764 #: inc/shortcodes.php:5057
     1765#: inc/shortcodes.php:3470
     1766#: inc/shortcodes.php:3774
     1767#: inc/shortcodes.php:3777
     1768#: inc/shortcodes.php:3828
     1769#: inc/shortcodes.php:5067
    17651770msgid "Post Update"
    17661771msgstr ""
    17671772
    1768 #: inc/shortcodes.php:3484
     1773#: inc/shortcodes.php:3494
    17691774msgid "Include Thumbnail"
    17701775msgstr ""
    17711776
    1772 #: inc/shortcodes.php:3488
     1777#: inc/shortcodes.php:3498
    17731778msgid "Mention Other Assets"
    17741779msgstr ""
    17751780
    1776 #: inc/shortcodes.php:3513
     1781#: inc/shortcodes.php:3523
    17771782msgid "Post to Feed"
    17781783msgstr ""
    17791784
    1780 #: inc/shortcodes.php:3638
     1785#: inc/shortcodes.php:3648
    17811786msgid "Posted Update"
    17821787msgstr ""
    17831788
    1784 #: inc/shortcodes.php:3740
     1789#: inc/shortcodes.php:3750
    17851790msgid "Asset"
    17861791msgstr ""
    17871792
    1788 #: inc/shortcodes.php:3741
     1793#: inc/shortcodes.php:3751
    17891794msgid "Updated"
    17901795msgstr ""
    17911796
    1792 #: inc/shortcodes.php:3743
     1797#: inc/shortcodes.php:3753
    17931798msgid "Action"
    17941799msgstr ""
    17951800
    1796 #: inc/shortcodes.php:3799
     1801#: inc/shortcodes.php:3809
    17971802msgid "Set Subscription"
    17981803msgstr ""
    17991804
    1800 #: inc/shortcodes.php:3801
     1805#: inc/shortcodes.php:3811
    18011806msgid "Set Price"
    18021807msgstr ""
    18031808
    1804 #: inc/shortcodes.php:3813
     1809#: inc/shortcodes.php:3823
    18051810msgid "You have no digital content assets, yet."
    18061811msgstr ""
    18071812
    1808 #: inc/shortcodes.php:3818
    1809 #: inc/shortcodes.php:5057
     1813#: inc/shortcodes.php:3828
     1814#: inc/shortcodes.php:5067
    18101815msgid "PeepSo"
    18111816msgstr ""
    18121817
    1813 #: inc/shortcodes.php:3821
    1814 #: inc/shortcodes.php:5060
     1818#: inc/shortcodes.php:3831
     1819#: inc/shortcodes.php:5070
    18151820#: paid-membership.php:162
    18161821msgid "Share available content to activity feed"
    18171822msgstr ""
    18181823
    1819 #: inc/shortcodes.php:3821
    1820 #: inc/shortcodes.php:5060
     1824#: inc/shortcodes.php:3831
     1825#: inc/shortcodes.php:5070
    18211826#: paid-membership.php:162
    18221827msgid "Share Content"
    18231828msgstr ""
    18241829
    1825 #: inc/shortcodes.php:3825
     1830#: inc/shortcodes.php:3835
    18261831#: paid-membership.php:158
    18271832msgid "Upload New Content"
    18281833msgstr ""
    18291834
    1830 #: inc/shortcodes.php:3836
     1835#: inc/shortcodes.php:3846
    18311836msgid "This page displays your digital content assets."
    18321837msgstr ""
    18331838
    1834 #: inc/shortcodes.php:3892
     1839#: inc/shortcodes.php:3902
    18351840msgid "The upload verification settings need administrator review."
    18361841msgstr ""
    18371842
    1838 #: inc/shortcodes.php:3933
     1843#: inc/shortcodes.php:3943
    18391844msgid "Please login to upload content. Visitor uploads are currently disabled from backend settings."
    18401845msgstr ""
    18411846
    1842 #: inc/shortcodes.php:3956
     1847#: inc/shortcodes.php:3966
    18431848msgid "Accepting Terms of Use is required."
    18441849msgstr ""
    18451850
    1846 #: inc/shortcodes.php:3961
     1851#: inc/shortcodes.php:3971
    18471852msgid "Nonce incorrect for content upload."
    18481853msgstr ""
    18491854
    1850 #: inc/shortcodes.php:3975
     1855#: inc/shortcodes.php:3985
    18511856msgid "Uploads per IP limit reached."
    18521857msgstr ""
    18531858
    1854 #: inc/shortcodes.php:3983
     1859#: inc/shortcodes.php:3993
    18551860msgid "The upload verification could not be completed. Please try again."
    18561861msgstr ""
    18571862
    1858 #: inc/shortcodes.php:4282
     1863#: inc/shortcodes.php:4292
    18591864msgid "Gallery(s)"
    18601865msgstr ""
    18611866
    1862 #: inc/shortcodes.php:4282
    1863 #: inc/shortcodes.php:4303
     1867#: inc/shortcodes.php:4292
     1868#: inc/shortcodes.php:4313
    18641869msgid "comma separated"
    18651870msgstr ""
    18661871
    1867 #: inc/shortcodes.php:4296
     1872#: inc/shortcodes.php:4306
    18681873msgid "Email"
    18691874msgstr ""
    18701875
    1871 #: inc/shortcodes.php:4333
     1876#: inc/shortcodes.php:4343
    18721877msgid "Could not submit upload"
    18731878msgstr ""
    18741879
    1875 #: inc/shortcodes.php:4451
    1876 #: inc/shortcodes.php:4930
     1880#: inc/shortcodes.php:4461
     1881#: inc/shortcodes.php:4942
    18771882msgid "Supported file types"
    18781883msgstr ""
    18791884
    1880 #: inc/shortcodes.php:4454
     1885#: inc/shortcodes.php:4464
    18811886msgid "File"
    18821887msgstr ""
    18831888
    1884 #: inc/shortcodes.php:4456
     1889#: inc/shortcodes.php:4466
    18851890msgid "File to upload"
    18861891msgstr ""
    18871892
    1888 #: inc/shortcodes.php:4458
     1893#: inc/shortcodes.php:4468
    18891894msgid "Details"
    18901895msgstr ""
    18911896
    1892 #: inc/shortcodes.php:4473
     1897#: inc/shortcodes.php:4483
     1898#: inc/shortcodes.php:4498
     1899msgid "Upload"
     1900msgstr ""
     1901
    18931902#: inc/shortcodes.php:4488
    1894 msgid "Upload"
    1895 msgstr ""
    1896 
    1897 #: inc/shortcodes.php:4478
    18981903msgid "I accept the Terms of Use"
    18991904msgstr ""
    19001905
    1901 #: inc/shortcodes.php:4485
     1906#: inc/shortcodes.php:4495
    19021907msgid "Uploading. Please wait..."
    19031908msgstr ""
    19041909
    1905 #: inc/shortcodes.php:4524
     1910#: inc/shortcodes.php:4534
    19061911msgid "Login is required to upload content!"
    19071912msgstr ""
    19081913
    1909 #: inc/shortcodes.php:4537
     1914#: inc/shortcodes.php:4547
    19101915msgid "You do not have permissions to share content!"
    19111916msgstr ""
    19121917
    1913 #: inc/shortcodes.php:4582
     1918#: inc/shortcodes.php:4592
    19141919msgid "List(s)"
    19151920msgstr ""
    19161921
    1917 #: inc/shortcodes.php:4613
     1922#: inc/shortcodes.php:4623
    19181923msgid "Default Picture"
    19191924msgstr ""
    19201925
    1921 #: inc/shortcodes.php:4613
     1926#: inc/shortcodes.php:4623
    19221927msgid "A previously uploaded picture can be associated to document uploads. Most content types like videos, pictures have own thumbnails."
    19231928msgstr ""
    19241929
    1925 #: inc/shortcodes.php:4727
     1930#: inc/shortcodes.php:4737
    19261931msgid "Submission Results"
    19271932msgstr ""
    19281933
    1929 #: inc/shortcodes.php:4757
     1934#: inc/shortcodes.php:4767
    19301935msgid "Only admin can upload for other users!"
    19311936msgstr ""
    19321937
    1933 #: inc/shortcodes.php:4773
     1938#: inc/shortcodes.php:4783
    19341939msgid "Unable to prepare the upload directory."
    19351940msgstr ""
    19361941
    1937 #: inc/shortcodes.php:4886
    1938 #: inc/shortcodes.php:4924
     1942#: inc/shortcodes.php:4896
     1943#: inc/shortcodes.php:4936
    19391944msgid "Details for each item can be later edited individually from assets page."
    19401945msgstr ""
    19411946
    1942 #: inc/shortcodes.php:4927
     1947#: inc/shortcodes.php:4908
     1948msgid "Videos"
     1949msgstr ""
     1950
     1951#: inc/shortcodes.php:4913
     1952msgid "Pictures"
     1953msgstr ""
     1954
     1955#: inc/shortcodes.php:4939
    19431956msgid "Add Files"
    19441957msgstr ""
    19451958
    1946 #: inc/shortcodes.php:4928
     1959#: inc/shortcodes.php:4940
    19471960msgid "Add Common Details"
    19481961msgstr ""
    19491962
    1950 #: inc/shortcodes.php:4929
     1963#: inc/shortcodes.php:4941
    19511964msgid "Save Content"
    19521965msgstr ""
    19531966
    1954 #: inc/shortcodes.php:5277
    1955 #: paid-membership.php:1953
     1967#: inc/shortcodes.php:5287
     1968#: paid-membership.php:1960
    19561969msgid "Lifetime"
    19571970msgstr ""
    19581971
    1959 #: inc/shortcodes.php:5277
     1972#: inc/shortcodes.php:5287
    19601973msgid "until"
    19611974msgstr ""
    19621975
    1963 #: inc/shortcodes.php:5309
     1976#: inc/shortcodes.php:5319
    19641977msgid "No purchases, yet. This section displays your digital content purchases, for easy access."
    19651978msgstr ""
    19661979
    1967 #: inc/shortcodes.php:5318
     1980#: inc/shortcodes.php:5328
    19681981msgid "Login for Wallet"
    19691982msgstr ""
    19701983
    1971 #: inc/shortcodes.php:5369
     1984#: inc/shortcodes.php:5379
    19721985msgid "Login to manage wallet!"
    19731986msgstr ""
    19741987
    1975 #: inc/shortcodes.php:5372
    1976 #: paid-membership.php:2980
    1977 #: paid-membership.php:3010
     1988#: inc/shortcodes.php:5382
     1989#: paid-membership.php:2987
     1990#: paid-membership.php:3017
    19781991msgid "This wallet requires administrator review before a payment can be made."
    19791992msgstr ""
    19801993
    1981 #: inc/shortcodes.php:5380
     1994#: inc/shortcodes.php:5390
    19821995msgid "Active balance"
    19831996msgstr ""
    19841997
    1985 #: inc/shortcodes.php:5381
     1998#: inc/shortcodes.php:5391
    19861999msgid "All Balances"
    19872000msgstr ""
    19882001
    1989 #: inc/shortcodes.php:5429
     2002#: inc/shortcodes.php:5439
    19902003msgid "MicroPayments: Transactions"
    19912004msgstr ""
    19922005
    1993 #: inc/shortcodes.php:5441
     2006#: inc/shortcodes.php:5451
    19942007msgid "MyCred: Transactions"
    19952008msgstr ""
    19962009
    1997 #: inc/shortcodes.php:5460
     2010#: inc/shortcodes.php:5470
    19982011msgid "TeraWallet: Transactions"
    19992012msgstr ""
    … …  
    20242037
    20252038#: paid-membership.php:658
    2026 #: paid-membership.php:1685
     2039#: paid-membership.php:1692
    20272040msgid "Collection"
    20282041msgstr ""
    … …  
    20372050
    20382051#: paid-membership.php:669
    2039 #: paid-membership.php:899
    2040 #: paid-membership.php:959
     2052#: paid-membership.php:902
     2053#: paid-membership.php:964
    20412054msgid "Views"
    20422055msgstr ""
    … …  
    20782091msgstr ""
    20792092
     2093#: paid-membership.php:893
     2094msgid "Loading category..."
     2095msgstr ""
     2096
    20802097#: paid-membership.php:898
     2098msgid "Ordering downloads..."
     2099msgstr ""
     2100
     2101#: paid-membership.php:901
    20812102msgid "Date Added"
    20822103msgstr ""
    20832104
    2084 #: paid-membership.php:900
     2105#: paid-membership.php:903
    20852106msgid "Viewed Recently"
    20862107msgstr ""
    20872108
    2088 #: paid-membership.php:935
     2109#: paid-membership.php:933
     2110msgid "Searching downloads..."
     2111msgstr ""
     2112
     2113#: paid-membership.php:939
     2114msgid "Reloading downloads..."
     2115msgstr ""
     2116
     2117#: paid-membership.php:940
    20892118msgid "Reload"
    20902119msgstr ""
    20912120
    2092 #: paid-membership.php:959
     2121#: paid-membership.php:964
    20932122msgid "Age"
    20942123msgstr ""
    20952124
    2096 #: paid-membership.php:960
     2125#: paid-membership.php:965
    20972126msgid "views"
    20982127msgstr ""
    20992128
    2100 #: paid-membership.php:985
     2129#: paid-membership.php:990
    21012130msgid "EDIT"
    21022131msgstr ""
    21032132
    2104 #: paid-membership.php:1015
     2133#: paid-membership.php:1020
    21052134msgid "No downloads."
    21062135msgstr ""
    21072136
    2108 #: paid-membership.php:1026
     2137#: paid-membership.php:1028
     2138msgid "Loading previous page..."
     2139msgstr ""
     2140
     2141#: paid-membership.php:1032
    21092142msgid "Page"
    21102143msgstr ""
    21112144
    2112 #: paid-membership.php:1156
     2145#: paid-membership.php:1035
     2146msgid "Loading next page..."
     2147msgstr ""
     2148
     2149#: paid-membership.php:1163
    21132150msgid "The upload could not be written to the configured directory."
    21142151msgstr ""
    21152152
    2116 #: paid-membership.php:1169
     2153#: paid-membership.php:1176
    21172154msgid "No files were received."
    21182155msgstr ""
    21192156
    2120 #: paid-membership.php:1189
     2157#: paid-membership.php:1196
    21212158msgid "The uploaded file could not be saved."
    21222159msgstr ""
    21232160
    2124 #: paid-membership.php:1337
     2161#: paid-membership.php:1344
    21252162msgid "Download was submitted and is pending approval."
    21262163msgstr ""
    21272164
    2128 #: paid-membership.php:1339
     2165#: paid-membership.php:1346
    21292166msgid "Download was published"
    21302167msgstr ""
    21312168
    2132 #: paid-membership.php:1677
    2133 #: paid-membership.php:1678
     2169#: paid-membership.php:1684
     2170#: paid-membership.php:1685
    21342171msgid "Channel"
    21352172msgstr ""
    21362173
    2137 #: paid-membership.php:1681
     2174#: paid-membership.php:1688
    21382175msgid "Paid Channel Item"
    21392176msgstr ""
    21402177
    2141 #: paid-membership.php:1681
     2178#: paid-membership.php:1688
    21422179msgid "This video is only accessible after paying for channel"
    21432180msgstr ""
    21442181
    2145 #: paid-membership.php:1695
     2182#: paid-membership.php:1702
    21462183msgid "Download Views"
    21472184msgstr ""
    21482185
    2149 #: paid-membership.php:1701
     2186#: paid-membership.php:1708
    21502187msgid "My Review"
    21512188msgstr ""
    21522189
    2153 #: paid-membership.php:1703
     2190#: paid-membership.php:1710
    21542191msgid "Warning: shortcodes missing. Plugin"
    21552192msgstr ""
    21562193
    2157 #: paid-membership.php:1703
     2194#: paid-membership.php:1710
    21582195msgid "Rate Star Review"
    21592196msgstr ""
    21602197
    2161 #: paid-membership.php:1703
     2198#: paid-membership.php:1710
    21622199msgid "should be installed and enabled or feature disabled."
    21632200msgstr ""
    21642201
    2165 #: paid-membership.php:1707
     2202#: paid-membership.php:1714
    21662203msgid "Reviews"
    21672204msgstr ""
    21682205
    2169 #: paid-membership.php:1730
     2206#: paid-membership.php:1737
    21702207msgctxt "Post Type General Name"
    21712208msgid "Downloads"
    21722209msgstr ""
    21732210
    2174 #: paid-membership.php:1731
     2211#: paid-membership.php:1738
    21752212msgctxt "Post Type Singular Name"
    21762213msgid "Download"
    21772214msgstr ""
    21782215
    2179 #: paid-membership.php:1733
     2216#: paid-membership.php:1740
    21802217msgid "Parent Download:"
    21812218msgstr ""
    21822219
    2183 #: paid-membership.php:1734
     2220#: paid-membership.php:1741
    21842221msgid "All Downloads"
    21852222msgstr ""
    21862223
    2187 #: paid-membership.php:1735
     2224#: paid-membership.php:1742
    21882225msgid "View Download"
    21892226msgstr ""
    21902227
    2191 #: paid-membership.php:1736
     2228#: paid-membership.php:1743
    21922229msgid "Add New Download"
    21932230msgstr ""
    21942231
    2195 #: paid-membership.php:1737
     2232#: paid-membership.php:1744
    21962233msgid "New Download"
    21972234msgstr ""
    21982235
    2199 #: paid-membership.php:1738
     2236#: paid-membership.php:1745
    22002237msgid "Edit Download"
    22012238msgstr ""
    22022239
    2203 #: paid-membership.php:1739
     2240#: paid-membership.php:1746
    22042241msgid "Update Download"
    22052242msgstr ""
    22062243
    2207 #: paid-membership.php:1740
     2244#: paid-membership.php:1747
    22082245msgid "Search Downloads"
    22092246msgstr ""
    22102247
    2211 #: paid-membership.php:1741
     2248#: paid-membership.php:1748
    22122249msgid "No Downloads found"
    22132250msgstr ""
    22142251
    2215 #: paid-membership.php:1742
     2252#: paid-membership.php:1749
    22162253msgid "No Downloads found in Trash"
    22172254msgstr ""
    22182255
    2219 #: paid-membership.php:1745
     2256#: paid-membership.php:1752
    22202257msgid "New download published"
    22212258msgstr ""
    22222259
    22232260#. translators: 1: Author name, 2: Download URL.
    2224 #: paid-membership.php:1748
     2261#: paid-membership.php:1755
    22252262#, php-format
    22262263msgid "%1$s posted a new <a href=\"%2$s\">download</a>"
    … …  
    22282265
    22292266#. translators: 1: Author name, 2: Download URL, 3: Site name.
    2230 #: paid-membership.php:1750
     2267#: paid-membership.php:1757
    22312268#, php-format
    22322269msgid "%1$s posted a new <a href=\"%2$s\">download</a>, on the site %3$s"
    22332270msgstr ""
    22342271
    2235 #: paid-membership.php:1755
     2272#: paid-membership.php:1762
    22362273msgid "download"
    22372274msgstr ""
    22382275
    2239 #: paid-membership.php:1791
     2276#: paid-membership.php:1798
    22402277msgctxt "taxonomy general name"
    22412278msgid "Collections"
    22422279msgstr ""
    22432280
    2244 #: paid-membership.php:1792
     2281#: paid-membership.php:1799
    22452282msgctxt "taxonomy singular name"
    22462283msgid "Collection"
    22472284msgstr ""
    22482285
    2249 #: paid-membership.php:1793
     2286#: paid-membership.php:1800
    22502287msgid "Search Collections"
    22512288msgstr ""
    22522289
    2253 #: paid-membership.php:1794
     2290#: paid-membership.php:1801
    22542291msgid "All Collections"
    22552292msgstr ""
    22562293
    2257 #: paid-membership.php:1795
     2294#: paid-membership.php:1802
    22582295msgid "Parent Collection"
    22592296msgstr ""
    22602297
    2261 #: paid-membership.php:1796
     2298#: paid-membership.php:1803
    22622299msgid "Parent Collection:"
    22632300msgstr ""
    22642301
    2265 #: paid-membership.php:1797
     2302#: paid-membership.php:1804
    22662303msgid "Edit Collection"
    22672304msgstr ""
    22682305
    2269 #: paid-membership.php:1798
     2306#: paid-membership.php:1805
    22702307msgid "Update Collection"
    22712308msgstr ""
    22722309
    2273 #: paid-membership.php:1799
     2310#: paid-membership.php:1806
    22742311msgid "Add New Collection"
    22752312msgstr ""
    22762313
    2277 #: paid-membership.php:1800
     2314#: paid-membership.php:1807
    22782315msgid "New Collection Name"
    22792316msgstr ""
    22802317
    2281 #: paid-membership.php:1801
     2318#: paid-membership.php:1808
    22822319msgid "Collections"
    22832320msgstr ""
    22842321
    2285 #: paid-membership.php:1933
     2322#: paid-membership.php:1940
    22862323msgid "One time"
    22872324msgstr ""
    22882325
    2289 #: paid-membership.php:1936
     2326#: paid-membership.php:1943
    22902327msgid "Weekly"
    22912328msgstr ""
    22922329
    2293 #: paid-membership.php:1939
     2330#: paid-membership.php:1946
    22942331msgid "Biweekly"
    22952332msgstr ""
    22962333
    2297 #: paid-membership.php:1942
     2334#: paid-membership.php:1949
    22982335msgid "Monthly"
    22992336msgstr ""
    23002337
    2301 #: paid-membership.php:1945
     2338#: paid-membership.php:1952
    23022339msgid "Yearly"
    23032340msgstr ""
    23042341
    2305 #: paid-membership.php:1956
     2342#: paid-membership.php:1963
    23062343msgid "1 Week"
    23072344msgstr ""
    23082345
    2309 #: paid-membership.php:1959
     2346#: paid-membership.php:1966
    23102347msgid "2 Weeks"
    23112348msgstr ""
    23122349
    2313 #: paid-membership.php:1962
     2350#: paid-membership.php:1969
    23142351msgid "1 Month"
    23152352msgstr ""
    23162353
    2317 #: paid-membership.php:1965
     2354#: paid-membership.php:1972
    23182355msgid "1 Year"
    23192356msgstr ""
    23202357
    2321 #: paid-membership.php:1975
     2358#: paid-membership.php:1982
    23222359msgid "lifetime"
    23232360msgstr ""
    23242361
    2325 #: paid-membership.php:1977
     2362#: paid-membership.php:1984
    23262363msgid "hours"
    23272364msgstr ""
    23282365
    2329 #: paid-membership.php:1996
     2366#: paid-membership.php:2003
    23302367msgid "As content owner, you can add unlimited comments."
    23312368msgstr ""
    23322369
    2333 #: paid-membership.php:2013
     2370#: paid-membership.php:2020
    23342371msgid "You can not add more comments. Comments limit:"
    23352372msgstr ""
    23362373
    2337 #: paid-membership.php:2027
     2374#: paid-membership.php:2034
    23382375msgid "Comments are shown."
    23392376msgstr ""
    23402377
    2341 #: paid-membership.php:2032
     2378#: paid-membership.php:2039
    23422379msgid "Comments are also hidden, with content."
    23432380msgstr ""
    23442381
    2345 #: paid-membership.php:2199
     2382#: paid-membership.php:2206
    23462383msgid "Author"
    23472384msgstr ""
    23482385
    2349 #: paid-membership.php:2213
     2386#: paid-membership.php:2220
    23502387msgid "You removed yourself from coauthors."
    23512388msgstr ""
    23522389
    2353 #: paid-membership.php:2245
     2390#: paid-membership.php:2252
    23542391msgid "Remove me as coauthor"
    23552392msgstr ""
    23562393
    2357 #: paid-membership.php:2276
     2394#: paid-membership.php:2283
    23582395msgid "You are the owner of this content."
    23592396msgstr ""
    23602397
    2361 #: paid-membership.php:2304
     2398#: paid-membership.php:2311
    23622399msgid "You have access to this content, by subscription."
    23632400msgstr ""
    23642401
    2365 #: paid-membership.php:2325
     2402#: paid-membership.php:2332
    23662403msgid "This content is available with author subscription."
    23672404msgstr ""
    23682405
    2369 #: paid-membership.php:2333
     2406#: paid-membership.php:2340
    23702407msgid "See Subscriptions"
    23712408msgstr ""
    23722409
    2373 #: paid-membership.php:2367
    2374 #: paid-membership.php:2399
    2375 #: paid-membership.php:2470
    2376 #: paid-membership.php:2473
    2377 #: paid-membership.php:2475
    2378 #: paid-membership.php:2491
    2379 #: paid-membership.php:2507
     2410#: paid-membership.php:2374
     2411#: paid-membership.php:2406
     2412#: paid-membership.php:2477
     2413#: paid-membership.php:2480
     2414#: paid-membership.php:2482
     2415#: paid-membership.php:2498
     2416#: paid-membership.php:2514
    23802417msgid "Access Price"
    23812418msgstr ""
    23822419
    2383 #: paid-membership.php:2381
     2420#: paid-membership.php:2388
    23842421msgid "Buyer features are not enabled for your role."
    23852422msgstr ""
    23862423
    2387 #: paid-membership.php:2383
    2388 #: paid-membership.php:2421
    2389 #: paid-membership.php:2423
    2390 #: paid-membership.php:2425
     2424#: paid-membership.php:2390
     2425#: paid-membership.php:2428
    23912426#: paid-membership.php:2430
     2427#: paid-membership.php:2432
     2428#: paid-membership.php:2437
     2429#: paid-membership.php:2946
     2430#: paid-membership.php:2952
     2431#: paid-membership.php:3012
     2432msgid "Payment could not be confirmed. Contact the site administrator before trying again."
     2433msgstr ""
     2434
     2435#: paid-membership.php:2406
     2436msgid "You already purchased this content."
     2437msgstr ""
     2438
     2439#: paid-membership.php:2414
     2440msgid "Insufficient funds!"
     2441msgstr ""
     2442
     2443#: paid-membership.php:2466
     2444msgid "Your payment was confirmed. A recipient payment needs administrator review; your access is retained."
     2445msgstr ""
     2446
     2447#: paid-membership.php:2477
     2448msgid "Accessing as content owner."
     2449msgstr ""
     2450
     2451#: paid-membership.php:2477
     2452#: paid-membership.php:2480
     2453#: paid-membership.php:2482
     2454msgid "Other users can see this content after purchasing access."
     2455msgstr ""
     2456
     2457#: paid-membership.php:2480
     2458#: paid-membership.php:2558
     2459#: paid-membership.php:2569
     2460msgid "Accessing as moderator."
     2461msgstr ""
     2462
     2463#: paid-membership.php:2482
     2464#: paid-membership.php:2560
     2465#: paid-membership.php:2571
     2466msgid "Accessing as coauthor."
     2467msgstr ""
     2468
     2469#: paid-membership.php:2498
     2470msgid "You purchased this content."
     2471msgstr ""
     2472
     2473#: paid-membership.php:2506
     2474msgid "Insufficient Funds"
     2475msgstr ""
     2476
     2477#: paid-membership.php:2508
     2478msgid "Purchase Access"
     2479msgstr ""
     2480
     2481#: paid-membership.php:2531
     2482#: paid-membership.php:2537
     2483msgid "View Product"
     2484msgstr ""
     2485
     2486#: paid-membership.php:2537
     2487msgid "Other users can see your content after purchasing access product."
     2488msgstr ""
     2489
     2490#: paid-membership.php:2545
     2491msgid "You purchased this content product."
     2492msgstr ""
     2493
     2494#: paid-membership.php:2549
     2495msgid "Buy Product"
     2496msgstr ""
     2497
     2498#: paid-membership.php:2558
     2499#: paid-membership.php:2560
     2500msgid "Other users can see this content with subscription."
     2501msgstr ""
     2502
     2503#: paid-membership.php:2569
     2504#: paid-membership.php:2571
     2505msgid "This content is free."
     2506msgstr ""
     2507
     2508#: paid-membership.php:2935
    23922509#: paid-membership.php:2939
    2393 #: paid-membership.php:2945
    2394 #: paid-membership.php:3005
    2395 msgid "Payment could not be confirmed. Contact the site administrator before trying again."
    2396 msgstr ""
    2397 
    2398 #: paid-membership.php:2399
    2399 msgid "You already purchased this content."
    2400 msgstr ""
    2401 
    2402 #: paid-membership.php:2407
    2403 msgid "Insufficient funds!"
    2404 msgstr ""
    2405 
    2406 #: paid-membership.php:2459
    2407 msgid "Your payment was confirmed. A recipient payment needs administrator review; your access is retained."
    2408 msgstr ""
    2409 
    2410 #: paid-membership.php:2470
    2411 msgid "Accessing as content owner."
    2412 msgstr ""
    2413 
    2414 #: paid-membership.php:2470
    2415 #: paid-membership.php:2473
    2416 #: paid-membership.php:2475
    2417 msgid "Other users can see this content after purchasing access."
    2418 msgstr ""
    2419 
    2420 #: paid-membership.php:2473
    2421 #: paid-membership.php:2551
    2422 #: paid-membership.php:2562
    2423 msgid "Accessing as moderator."
    2424 msgstr ""
    2425 
    2426 #: paid-membership.php:2475
    2427 #: paid-membership.php:2553
    2428 #: paid-membership.php:2564
    2429 msgid "Accessing as coauthor."
    2430 msgstr ""
    2431 
    2432 #: paid-membership.php:2491
    2433 msgid "You purchased this content."
    2434 msgstr ""
    2435 
    2436 #: paid-membership.php:2499
    2437 msgid "Insufficient Funds"
    2438 msgstr ""
    2439 
    2440 #: paid-membership.php:2501
    2441 msgid "Purchase Access"
    2442 msgstr ""
    2443 
    2444 #: paid-membership.php:2524
    2445 #: paid-membership.php:2530
    2446 msgid "View Product"
    2447 msgstr ""
    2448 
    2449 #: paid-membership.php:2530
    2450 msgid "Other users can see your content after purchasing access product."
    2451 msgstr ""
    2452 
    2453 #: paid-membership.php:2538
    2454 msgid "You purchased this content product."
    2455 msgstr ""
    2456 
    2457 #: paid-membership.php:2542
    2458 msgid "Buy Product"
    2459 msgstr ""
    2460 
    2461 #: paid-membership.php:2551
    2462 #: paid-membership.php:2553
    2463 msgid "Other users can see this content with subscription."
    2464 msgstr ""
    2465 
    2466 #: paid-membership.php:2562
    2467 #: paid-membership.php:2564
    2468 msgid "This content is free."
    2469 msgstr ""
    2470 
    2471 #: paid-membership.php:2928
    2472 #: paid-membership.php:2932
    24732510msgid "Transfer to"
    24742511msgstr ""
    24752512
    2476 #: paid-membership.php:2939
     2513#: paid-membership.php:2946
    24772514msgid "Transferred to active balance."
    24782515msgstr ""
    24792516
    2480 #: paid-membership.php:2945
     2517#: paid-membership.php:2952
    24812518msgid "Transferred to secondary balance."
    24822519msgstr ""
    24832520
    2484 #: paid-membership.php:2983
     2521#: paid-membership.php:2990
    24852522msgid "Choose two different wallets for a transfer."
    24862523msgstr ""
    24872524
    2488 #: paid-membership.php:2992
     2525#: paid-membership.php:2999
    24892526msgid "The transfer balance could not be confirmed."
    24902527msgstr ""
    24912528
    2492 #: paid-membership.php:2994
     2529#: paid-membership.php:3001
    24932530msgid "Wallet balance transfer"
    24942531msgstr ""
  • paid-membership/trunk/paid-membership.php

    r3784838 r3784940  
    44Plugin URI: https://fanspaysite.com/
    55Description: Sell digital content and creator subscriptions, manage buyer and creator workspaces, and accept payments through supported site wallets.
    6 Version: 4.1.0
     6Version: 4.1.1
    77Requires at least: 6.9
    88Requires PHP: 8.2
    … …  
    748748                        // This public AJAX endpoint only reads published download data.
    749749                // phpcs:disable WordPress.Security.NonceVerification.Recommended -- A nonce is not required for read-only public filters.
    750                         $perPage = isset( $_GET['pp'] ) ? absint( wp_unslash( $_GET['pp'] ) ) : 0;
     750                        $get = static function ( $key ) { return isset( $_GET[ $key ] ) && is_scalar( $_GET[ $key ] ) ? wp_unslash( (string) $_GET[ $key ] ) : ''; };
     751                        $perPage = absint( $get( 'pp' ) );
    751752                        if ( ! $perPage ) {
    752753                                $perPage = absint( $options['perPage'] );
    … …  
    754755                        $perPage = min( $perPage, 100 );
    755756
    756                         $collection = isset( $_GET['collection'] ) ? sanitize_file_name( wp_unslash( $_GET['collection'] ) ) : '';
    757 
    758                         $id = isset( $_GET['id'] ) ? sanitize_key( wp_unslash( $_GET['id'] ) ) : '';
    759 
    760                         $category = isset( $_GET['cat'] ) ? absint( wp_unslash( $_GET['cat'] ) ) : 0;
    761 
    762                         $page   = isset( $_GET['p'] ) ? absint( wp_unslash( $_GET['p'] ) ) : 0;
     757                        $collection = sanitize_file_name( $get( 'collection' ) );
     758
     759                        $id = self::downloads_id( $get( 'id' ) );
     760
     761                        $category = absint( $get( 'cat' ) );
     762
     763                        $page   = absint( $get( 'p' ) );
    763764                        $offset = $page * $perPage;
    764765
    765                         $perRow = isset( $_GET['pr'] ) ? min( absint( wp_unslash( $_GET['pr'] ) ), 12 ) : 0;
     766                        $perRow = min( absint( $get( 'pr' ) ), 12 );
    766767
    767768                        // order
    768769                        $allowed_orderby = array( 'post_date', 'download-views', 'download-lastview', 'rateStarReview_rating', 'rateStarReview_ratingNumber', 'rateStarReview_ratingPoints', 'rand' );
    769                         $order_by = isset( $_GET['ob'] ) ? sanitize_key( wp_unslash( $_GET['ob'] ) ) : '';
    770                         if ( ! in_array( $order_by, $allowed_orderby, true ) ) {
    771                                 $order_by = 'post_date';
    772                         }
     770                        $order_index = array_search( strtolower( sanitize_text_field( $get( 'ob' ) ) ), array_map( 'strtolower', $allowed_orderby ), true );
     771                        $order_by = false === $order_index ? 'post_date' : $allowed_orderby[ $order_index ];
    773772
    774773                        // options
    775                         $selectCategory = isset( $_GET['sc'] ) ? absint( wp_unslash( $_GET['sc'] ) ) : 0;
    776                         $selectOrder    = isset( $_GET['so'] ) ? absint( wp_unslash( $_GET['so'] ) ) : 0;
    777                         $selectPage     = isset( $_GET['sp'] ) ? absint( wp_unslash( $_GET['sp'] ) ) : 0;
    778 
    779                         $selectName = isset( $_GET['sn'] ) ? absint( wp_unslash( $_GET['sn'] ) ) : 0;
    780                         $selectTags = isset( $_GET['sg'] ) ? absint( wp_unslash( $_GET['sg'] ) ) : 0;
     774                        $selectCategory = absint( $get( 'sc' ) );
     775                        $selectOrder    = absint( $get( 'so' ) );
     776                        $selectPage     = absint( $get( 'sp' ) );
     777
     778                        $selectName = absint( $get( 'sn' ) );
     779                        $selectTags = absint( $get( 'sg' ) );
    781780
    782781                        // tags,name search
    783                         $tags = isset( $_GET['tags'] ) ? sanitize_text_field( wp_unslash( $_GET['tags'] ) ) : '';
    784                         $name = isset( $_GET['name'] ) ? sanitize_text_field( wp_unslash( $_GET['name'] ) ) : '';
     782                        $tags = sanitize_text_field( $get( 'tags' ) );
     783                        $name = sanitize_text_field( $get( 'name' ) );
    785784                // phpcs:enable WordPress.Security.NonceVerification.Recommended
    786785                        if ( $name == 'undefined' ) {
    … …  
    874873
    875874                        // without page: changing goes to page 1 but selection persists
    876                         $ajaxurlC = $ajaxurl . '&cat=' . $category . '&ob=' . $order_by . '&tags=' . urlencode( $tags ) . '&name=' . urlencode( $name ); // sel ord
    877                         $ajaxurlO = $ajaxurl . '&ob=' . $order_by . '&ob=' . $order_by . '&tags=' . urlencode( $tags ) . '&name=' . urlencode( $name ); // sel cat
     875                        $ajaxurlC = $ajaxurl . '&cat=' . $category . '&tags=' . urlencode( $tags ) . '&name=' . urlencode( $name ); // sel ord
     876                        $ajaxurlO = $ajaxurl . '&ob=' . $order_by . '&tags=' . urlencode( $tags ) . '&name=' . urlencode( $name ); // sel cat
    878877
    879878                        $ajaxurlCO = $ajaxurl . '&cat=' . $category . '&ob=' . $order_by; // select tag name
    880879
    881880                        $ajaxurlA = $ajaxurl . '&cat=' . $category . '&ob=' . $order_by . '&tags=' . urlencode( $tags ) . '&name=' . urlencode( $name );
     881                        $url_json = static function ( $url ) { return self::frontend_json( esc_url_raw( $url ) ); };
     882                        $loading_json = static function ( $message ) { return self::frontend_json( '<div class="ui active inline text large loader">' . esc_html( $message ) . '</div>' ); };
    882883
    883884                        // options
    … …  
    889890                        if ( $selectCategory ) {
    890891                                echo '<div class="field">' . wp_dropdown_categories( 'show_count=0&echo=0&name=category' . esc_attr( $id ) . '&hide_empty=1&class=ui+dropdown+fluid&show_option_all=' . esc_html__( 'All', 'paid-membership' ) . '&selected=' . esc_attr( $category ) ) . '</div>';
    891                                 echo '<script>var category' . esc_attr( $id ) . ' = document.getElementById("category' . esc_attr( $id ) . '");                         category' . esc_attr( $id ) . '.onchange = function(){aurl' . esc_attr( $id ) . '=\'' . esc_url_raw( $ajaxurlO ) . '&cat=\'+ this.value; loadDownloads' . esc_attr( $id ) . '(\'<div class=\\\'ui active inline text large loader\\\'>Loading category...</div>\')}
     892                                // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- downloads_id() strictly allows identifier characters; other script values are HEX-encoded JSON, not HTML.
     893                                echo '<script>var category' . $id . ' = document.getElementById(' . self::frontend_json( 'category' . $id ) . '); category' . $id . '.onchange = function(){aurl' . $id . '=' . $url_json( $ajaxurlO . '&cat=' ) . '+encodeURIComponent(this.value); loadDownloads' . $id . '(' . $loading_json( __( 'Loading category...', 'paid-membership' ) ) . ')}
    892894                        </script>';
    893895                        }
    894896
    895897                        if ( $selectOrder ) {
    896                                 echo '<div class="field"><select class="ui dropdown v-select fluid" id="order_by' . esc_attr( $id ) . '" name="order_by' . esc_attr( $id ) . '" onchange="aurl' . esc_attr( $id ) . '=\'' . esc_url_raw( $ajaxurlC ) . '&ob=\'+ this.value; loadDownloads' . esc_attr( $id ) . '(\'<div class=\\\'ui active inline text large loader\\\'>Ordering downloads...</div>\')">';
     898                                $change = 'aurl' . $id . '=' . $url_json( $ajaxurlC . '&ob=' ) . '+encodeURIComponent(this.value); loadDownloads' . $id . '(' . $loading_json( __( 'Ordering downloads...', 'paid-membership' ) ) . ')';
     899                                echo '<div class="field"><select class="ui dropdown v-select fluid" id="order_by' . esc_attr( $id ) . '" name="order_by' . esc_attr( $id ) . '" onchange="' . esc_attr( $change ) . '">';
    897900                                echo '<option value="">' . esc_html__( 'Order By', 'paid-membership' ) . ':</option>';
    898901                                echo '<option value="post_date"' . ( $order_by == 'post_date' ? ' selected' : '' ) . '>' . esc_html__( 'Date Added', 'paid-membership' ) . '</option>';
    … …  
    915918
    916919                                if ( $selectTags ) {
    917                                         echo '<div class="field" data-tooltip="Tags, Comma Separated"><div class="ui left icon input fluid"><i class="tags icon"></i><INPUT class="videowhisperInput" type="text" size="12" name="tags" id="tags" placeholder="' . esc_html__( 'Tags', 'paid-membership' ) . '" value="' . esc_attr( htmlspecialchars( $tags ) ) . '">
     920                                        echo '<div class="field" data-tooltip="Tags, Comma Separated"><div class="ui left icon input fluid"><i class="tags icon"></i><INPUT class="videowhisperInput" type="text" size="12" name="tags" id="tags" placeholder="' . esc_html__( 'Tags', 'paid-membership' ) . '" value="' . esc_attr( $tags ) . '">
    918921                                        </div></div>';
    919922                                }
    920923
    921924                                if ( $selectName ) {
    922                                         echo '<div class="field"><div class="ui left corner labeled input fluid"><INPUT class="videowhisperInput" type="text" size="12" name="name" id="name" placeholder="' . esc_html__( 'Name', 'paid-membership' ) . '" value="' . esc_attr( htmlspecialchars( $name ) ) . '">
     925                                        echo '<div class="field"><div class="ui left corner labeled input fluid"><INPUT class="videowhisperInput" type="text" size="12" name="name" id="name" placeholder="' . esc_html__( 'Name', 'paid-membership' ) . '" value="' . esc_attr( $name ) . '">
    923926  <div class="ui left corner label">
    924927    <i class="asterisk icon"></i>
    … …  
    928931
    929932                                // search button
    930                                 echo '<div class="field" data-tooltip="Search by Tags and/or Name"><button class="ui icon button" type="submit" name="submit" id="submit" value="' . esc_html__( 'Search', 'paid-membership' ) . '" onclick="aurl' . esc_attr( $id ) . '=\'' . esc_url_raw( $ajaxurlCO ) . '&tags=\' + document.getElementById(\'tags\').value +\'&name=\' + document.getElementById(\'name\').value; loadDownloads' . esc_attr( $id ) . '(\'<div class=\\\'ui active inline text large loader\\\'>Searching downloads...</div>\')"><i class="search icon"></i></button></div>';
     933                                $search = 'var tags=document.getElementById("tags"),name=document.getElementById("name");aurl' . $id . '=' . $url_json( $ajaxurlCO . '&tags=' ) . '+encodeURIComponent(tags?tags.value:"")+"&name="+encodeURIComponent(name?name.value:"");loadDownloads' . $id . '(' . $loading_json( __( 'Searching downloads...', 'paid-membership' ) ) . ')';
     934                                echo '<div class="field" data-tooltip="Search by Tags and/or Name"><button class="ui icon button" type="submit" name="submit" id="submit" value="' . esc_html__( 'Search', 'paid-membership' ) . '" onclick="' . esc_attr( $search ) . '"><i class="search icon"></i></button></div>';
    931935                        }
    932936
    933937                        // reload button
    934938                        if ( $selectCategory || $selectOrder || $selectTags || $selectName ) {
    935                                 echo '<div class="field"></div> <div class="field" data-tooltip="Reload"><button class="ui icon button" type="submit" name="reload" id="reload" value="' . esc_html__( 'Reload', 'paid-membership' ) . '" onclick="aurl' . esc_attr( $id ) . '=\'' . esc_url_raw( $ajaxurlA ) . '\'; loadDownloads' . esc_attr( $id ) . '(\'<div class=\\\'ui active inline text large loader\\\'>Reloading downloads...</div>\')"><i class="sync icon"></i></button></div>';
     939                                $reload = 'aurl' . $id . '=' . $url_json( $ajaxurlA ) . ';loadDownloads' . $id . '(' . $loading_json( __( 'Reloading downloads...', 'paid-membership' ) ) . ')';
     940                                echo '<div class="field"></div> <div class="field" data-tooltip="Reload"><button class="ui icon button" type="submit" name="reload" id="reload" value="' . esc_html__( 'Reload', 'paid-membership' ) . '" onclick="' . esc_attr( $reload ) . '"><i class="sync icon"></i></button></div>';
    936941                        }
    937942
    … …  
    10211026
    10221027                                if ( $page > 0 ) {
    1023                                         echo ' <a class="ui labeled icon button" href="JavaScript: void()" onclick="aurl' . esc_attr( $id ) . '=\'' . esc_url_raw( $ajaxurlA ) . '&p=' . intval( $page - 1 ) . '\'; loadDownloads' . esc_attr( $id ) . '(\'<div class=\\\'ui active inline text large loader\\\'>Loading previous page...</div>\');"><i class="left arrow icon"></i> ' . esc_html__( 'Previous', 'paid-membership' ) . '</a> ';
     1028                                        $previous = 'aurl' . $id . '=' . $url_json( $ajaxurlA . '&p=' . ( $page - 1 ) ) . ';loadDownloads' . $id . '(' . $loading_json( __( 'Loading previous page...', 'paid-membership' ) ) . ');return false;';
     1029                                        echo ' <a class="ui labeled icon button" href="#" onclick="' . esc_attr( $previous ) . '"><i class="left arrow icon"></i> ' . esc_html__( 'Previous', 'paid-membership' ) . '</a> ';
    10241030                                }
    10251031
    … …  
    10271033
    10281034                                if ( count( $postslist ) >= $perPage ) {
    1029                                         echo ' <a class="ui right labeled icon button" href="JavaScript: void()" onclick="aurl' . esc_attr( $id ) . '=\'' . esc_url_raw( $ajaxurlA ) . '&p=' . intval( $page + 1 ) . '\'; loadDownloads' . esc_attr( $id ) . '(\'<div class=\\\'ui active inline text large loader\\\'>Loading next page...</div>\');">' . esc_html__( 'Next', 'paid-membership' ) . ' <i class="right arrow icon"></i></a> ';
     1035                                        $next = 'aurl' . $id . '=' . $url_json( $ajaxurlA . '&p=' . ( $page + 1 ) ) . ';loadDownloads' . $id . '(' . $loading_json( __( 'Loading next page...', 'paid-membership' ) ) . ');return false;';
     1036                                        echo ' <a class="ui right labeled icon button" href="#" onclick="' . esc_attr( $next ) . '">' . esc_html__( 'Next', 'paid-membership' ) . ' <i class="right arrow icon"></i></a> ';
    10301037                                }
    10311038                        }
  • paid-membership/trunk/readme.txt

    r3784838 r3784940  
    102102The bundled Fomantic UI 2.8.8 JavaScript/CSS is MIT-licensed. Human-readable source and build tools are available in the [tagged upstream repository](https://github.com/fomantic/Fomantic-UI/tree/2.8.8). The plugin removes its Google Fonts import and conditional Twemoji CDN image requests; typography uses available fallback fonts, and custom content can use native Unicode emoji text. Exact patch instructions, source links and hashes are included in `interface/semantic/README.txt` and `asset-provenance.json`.
    103103
    104 Existing icon fonts are retained from the [Semantic UI 2.3.3 distribution](https://github.com/Semantic-Org/Semantic-UI/tree/2.3.3/dist/themes/default/assets/fonts), with Font Awesome copyright notices and the SIL Open Font License 1.1 included alongside the font files. The UI code's MIT license does not replace the font license. The bundled jQuery UI theme retains its MIT notice; the Plupload UI widget retains its GPL notice and its readable JavaScript source.
     104Existing icon fonts are retained from the [Semantic UI 2.3.3 distribution](https://github.com/Semantic-Org/Semantic-UI/tree/2.3.3/dist/themes/default/assets/fonts), with Font Awesome copyright notices and the SIL Open Font License 1.1 included alongside the font files. The UI code's MIT license does not replace the font license. The bundled jQuery UI theme retains its MIT notice; the Plupload UI widget retains its GPL notice, readable JavaScript source and local text-rendering maintenance notice. Rebuild its matching minified file with the pinned Terser command in that source header.
    105105
    106106== Installation ==
    … …  
    225225
    226226== Changelog ==
     227
     228= 4.1.1 =
     229* Serialize frontend donation and uploader settings as data, validate numeric slider values and reject malformed extension arrays.
     230* Normalize legacy download-list identifiers consistently, preserve case, safely encode filter links and retain normal search, sorting and pagination.
     231* Render uploader filenames, renamed titles and error details as text while retaining notification formatting. Refresh the matching readable/minified uploader build.
     232* Keep existing purchases, subscriptions, balances, creator permissions and modern library behavior unchanged.
    227233
    228234= 4.1.0 =
    … …  
    365371== Upgrade Notice ==
    366372
     373= 4.1.1 =
     374Security maintenance for frontend settings and legacy listing/uploader output. Existing commerce records and access rules are retained.
     375
    367376= 4.0.0 =
    368377Requires WordPress 6.9/PHP 8.2. Multisite: network-activate; retained legacy funds/access stay held until reviewed adoption, and shared wallets need per-site account/unit approval. Data is retained; single-site data is unchanged. English-first.
Note: See TracChangeset for help on using the changeset viewer.