Version 2.3.6
This commit is contained in:
1 parent
a3bb603c96
commit
19b38c7c74
764 files changed
+143731
-118164
No files matched your search
@@ -0,0 +1,666 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// IPS JS: Attach Functions
|
||||
// (c) 2005 Invision Power Services, Inc.
|
||||
// http://www.invisionpower.com
|
||||
// Matt Mecham (16/12/05)
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
var ipsattach = new ips_attach();
|
||||
|
||||
function ips_attach()
|
||||
{
|
||||
/**
|
||||
* iFrame id
|
||||
*/
|
||||
this.iframe_id = 'ips--iframe-obj-attach';
|
||||
/**
|
||||
* iFrame Object
|
||||
*/
|
||||
this.iframe_obj = null;
|
||||
/**
|
||||
* Init URL
|
||||
* URL to load to display current attachments, etc
|
||||
*/
|
||||
this.iframe_init_url = '';
|
||||
/**
|
||||
* URL for removing attachment
|
||||
*/
|
||||
this.iframe_remove_url = '';
|
||||
/**
|
||||
* The name of the DIV that this iframe is attached to
|
||||
*/
|
||||
this.iframe_add_to_div = 'ips-attach-div-iframe';
|
||||
this.iframe_add_to_div_obj = null;
|
||||
/**
|
||||
* The name of the DIV that this iframe is attached to
|
||||
*/
|
||||
this.iframe_parent_div = 'ips-attach-div-parent';
|
||||
this.iframe_parent_div_obj = null;
|
||||
/**
|
||||
* The name of the DIV that the status bar is in
|
||||
*/
|
||||
this.status_div = 'ips-attach-div-status';
|
||||
this.status_div_obj = null;
|
||||
/**
|
||||
* The name of the DIV that the dropdown menu text is in
|
||||
*/
|
||||
this.dropdown_text = 'ips-attach-menu-text';
|
||||
this.dropdown_text_obj = null;
|
||||
/**
|
||||
* Default iframe height
|
||||
*/
|
||||
this.iframe_height = 300;
|
||||
/**
|
||||
* css class names
|
||||
*/
|
||||
this.iframe_classname = 'attach-iframe';
|
||||
/**
|
||||
* Message cover
|
||||
*/
|
||||
this.message_div_id = 'ips-attach-message';
|
||||
this.message_div_obj = null;
|
||||
this.message_span_id = 'ips-attach-message-span';
|
||||
this.message_span_obj = null;
|
||||
/**
|
||||
* Default Status message
|
||||
*/
|
||||
this.status_msg = '';
|
||||
this.status_is_error = '';
|
||||
/**
|
||||
* Current items array
|
||||
*/
|
||||
this.current_items = new Array();
|
||||
/**
|
||||
* Current items' menu
|
||||
*/
|
||||
this.current_item_menu = 'ips-attach-menu';
|
||||
this.current_item_menu_obj = null;
|
||||
/**
|
||||
* Images URL
|
||||
*/
|
||||
this.images_url = null;
|
||||
/**
|
||||
* Language array
|
||||
*/
|
||||
this.lang = new Array();
|
||||
/**
|
||||
* CSS classes
|
||||
*/
|
||||
this.css_menu_row = 'attach-menu-row';
|
||||
this.css_menu_row_over = 'attach-menu-row-over';
|
||||
/**
|
||||
* Show attachments menu
|
||||
*/
|
||||
this.show_attach_menu = 1;
|
||||
/**
|
||||
* Onload command
|
||||
*/
|
||||
this.onload_function = '';
|
||||
|
||||
/**
|
||||
* Has an upload...
|
||||
*/
|
||||
this.has_upload_pending = 0;
|
||||
|
||||
/**
|
||||
* INIT
|
||||
*/
|
||||
this.init = function()
|
||||
{
|
||||
//-----------------------------------------
|
||||
// INIT objects
|
||||
//-----------------------------------------
|
||||
|
||||
this.iframe_add_to_div_obj = document.getElementById( this.iframe_add_to_div );
|
||||
this.iframe_parent_div_obj = document.getElementById( this.iframe_parent_div );
|
||||
this.message_div_obj = document.getElementById( this.message_div_id );
|
||||
this.message_span_obj = document.getElementById( this.message_span_id );
|
||||
this.status_div_obj = document.getElementById( this.status_div );
|
||||
this.dropdown_text_obj = document.getElementById( this.dropdown_text );
|
||||
|
||||
//-----------------------------------------
|
||||
// INIT Current button
|
||||
//-----------------------------------------
|
||||
|
||||
if ( this.show_attach_menu )
|
||||
{
|
||||
// INIT div
|
||||
this.current_item_menu_obj = document.getElementById( this.current_item_menu );
|
||||
|
||||
ipsmenu.register( this.current_item_menu );
|
||||
|
||||
this.current_item_menu_obj._onclick = this.current_item_menu_obj.onclick;
|
||||
this.current_item_menu_obj.onmouseover = this.current_item_menu_obj.onmouseout = this.current_item_menu_obj.onclick = this.current_menu_mouseover;
|
||||
|
||||
ipsmenu.menu_registered[ this.current_item_menu ]._open = ipsmenu.menu_registered[ this.current_item_menu ].open;
|
||||
ipsmenu.menu_registered[ this.current_item_menu ].open = this.current_menu_button_show;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Dynamically builds the HTML for the IPS Menu system
|
||||
*
|
||||
* @var object Javascript object clicked
|
||||
*/
|
||||
this.init_current_menu = function( obj )
|
||||
{
|
||||
//-----------------------------------------
|
||||
// Old menu?
|
||||
//-----------------------------------------
|
||||
|
||||
var menu = '';
|
||||
|
||||
try
|
||||
{
|
||||
menu = document.getElementById( ipsattach.current_item_menu + '_menu' );
|
||||
menu.innerHTML = '';
|
||||
}
|
||||
catch(error)
|
||||
{
|
||||
menu = document.createElement('div');
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// Create menu wrapper
|
||||
//-----------------------------------------
|
||||
|
||||
var _items = 0;
|
||||
|
||||
menu.id = ipsattach.current_item_menu + '_menu';
|
||||
menu.className = 'attach-popupmenu';
|
||||
menu.style.display = 'none';
|
||||
menu.style.cursor = 'default';
|
||||
menu.style.padding = '3px';
|
||||
menu.style.width = 'auto';
|
||||
menu.style.overflow = 'auto';
|
||||
|
||||
//-----------------------------------------
|
||||
// What are we doing?
|
||||
//-----------------------------------------
|
||||
|
||||
for( var i in ipsattach.current_items )
|
||||
{
|
||||
var option = document.createElement('div');
|
||||
option.innerHTML = ipsattach.current_items[i];
|
||||
option.style.width = ipsattach.current_item_menu_obj.style.width;
|
||||
option.className = 'attach-menu-row';
|
||||
option.onmouseover = option.onmouseout = ipsattach.menu_onmouse_event;
|
||||
menu.appendChild(option);
|
||||
|
||||
_items++;
|
||||
}
|
||||
|
||||
if ( ! _items )
|
||||
{
|
||||
var option = document.createElement('div');
|
||||
option.innerHTML = ipsattach.lang['no_items'];
|
||||
option.style.width = ipsattach.current_item_menu_obj.style.width;
|
||||
option.className = 'attach-menu-row';
|
||||
option.onmouseover = option.onmouseout = ipsattach.menu_onmouse_event;
|
||||
menu.appendChild(option);
|
||||
}
|
||||
|
||||
// Set status counter correct
|
||||
ipsattach.set_attach_count_status( _items );
|
||||
|
||||
ipsattach.iframe_parent_div_obj.appendChild(menu);
|
||||
|
||||
ipsclass.set_unselectable( menu );
|
||||
};
|
||||
|
||||
/**
|
||||
* Recounts number of current attachments and sets counter
|
||||
*
|
||||
* @param integer Cached count
|
||||
*/
|
||||
this.set_attach_count_status = function( _items )
|
||||
{
|
||||
if ( ! ipsattach.show_attach_menu )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( typeof( _items ) == 'undefined' )
|
||||
{
|
||||
_items = 0;
|
||||
|
||||
for( var i in ipsattach.current_items )
|
||||
{
|
||||
_items++;
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
ipsattach.dropdown_text_obj.innerHTML = " (" + _items + ")";
|
||||
}
|
||||
catch(error)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Add item into current_attachments menu
|
||||
*/
|
||||
this.add_current_item = function( attach_id, attach_name, attach_size, attach_image )
|
||||
{
|
||||
//-----------------------------------------
|
||||
// Fix up attach_name
|
||||
//-----------------------------------------
|
||||
|
||||
if ( attach_name.length > 22 )
|
||||
{
|
||||
var _ext = attach_name.replace( /^.*\.(\S+?)$/ , "$1" );
|
||||
var _main = attach_name.replace( /^(.*)\.\S+?$/ , "$1" );
|
||||
var _a = _main.substr( 0, 8 );
|
||||
var _b = _main.substr( _main.length - 8 , _main.length );
|
||||
|
||||
attach_name = _a + '...' + _b + '.' + _ext;
|
||||
}
|
||||
|
||||
var html = '';
|
||||
|
||||
html += '<img onclick="ipsattach.add_attachment_into_editor(' + attach_id + ', \'' + attach_name + '\')" src="' + this.images_url + '/folder_attach_images/attach_add.png" title="' + this.lang['attach_insert'] + '" style="vertical-align:middle" border="0" alt="" /> ';
|
||||
html += '<img onclick="ipsattach.remove_attachment(' + attach_id + ');" src="' + this.images_url + '/folder_attach_images/attach_remove.png" title="' + this.lang['attach_remove'] + ': [' + attach_id + ']' + '" style="vertical-align:middle" border="0" alt="" /> ';
|
||||
|
||||
html += '<img src="' + this.images_url + '/' + attach_image + '" style="vertical-align:middle" border="0" alt="" /> ';
|
||||
html += '<span style="font-weight:bold" onclick="ipsattach.add_attachment_into_editor(' + attach_id + ', \'' + attach_name + '\')">' + attach_name + '</span>';
|
||||
html += ' <span class="desctext"> ('+attach_size+')</span>';
|
||||
|
||||
this.current_items[ this.current_items.length ] = html;
|
||||
};
|
||||
|
||||
/**
|
||||
* Adds the IPD attach tag into the current editor
|
||||
*
|
||||
* @param integer Attachment ID
|
||||
* @param string Attachment name
|
||||
*/
|
||||
this.add_attachment_into_editor = function( id, name )
|
||||
{
|
||||
// Form tag
|
||||
var tag = "[attachment=" + id + ":" + name + "]";
|
||||
|
||||
// Add
|
||||
ipsclass.add_editor_contents( tag );
|
||||
};
|
||||
|
||||
/**
|
||||
* Removes an attachment
|
||||
*
|
||||
* @param integer Attachment ID
|
||||
*/
|
||||
this.remove_attachment = function( id )
|
||||
{
|
||||
menu_action_close();
|
||||
|
||||
if ( confirm( ipsattach.lang['remove_warn'] + ' ['+ id + ']' ) )
|
||||
{
|
||||
ipsattach.iframe_obj.src = ipsattach.iframe_remove_url + "&attach_id=" + id;
|
||||
|
||||
ipsattach.iframe_on_un_load( 'attach_removal' );
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Show upload field and attachments
|
||||
* Draws the iFrame and sets the source
|
||||
*/
|
||||
this.show_attach_box = function()
|
||||
{
|
||||
//-----------------------------------------
|
||||
// INIT
|
||||
//-----------------------------------------
|
||||
|
||||
var iheight = parseInt( this.iframe_add_to_div_obj.style.height );
|
||||
var iwidth = this.iframe_add_to_div_obj.style.width;
|
||||
|
||||
//-----------------------------------------
|
||||
// Generate iFrame box
|
||||
//-----------------------------------------
|
||||
|
||||
if ( ! this.iframe_obj )
|
||||
{
|
||||
this.iframe_obj = document.createElement( 'IFRAME' );
|
||||
|
||||
this.iframe_obj.src = this.iframe_init_url;
|
||||
this.iframe_obj.id = this.iframe_id;
|
||||
this.iframe_obj.name = this.iframe_id;
|
||||
this.iframe_obj.scrolling = 'no';
|
||||
this.iframe_obj.frameBorder = 'no';
|
||||
this.iframe_obj.border = '0';
|
||||
this.iframe_obj.className = this.iframe_classname;
|
||||
this.iframe_obj.style.width = iwidth ? iwidth : '100%';
|
||||
this.iframe_obj.style.height = iheight ? iheight - 5 + 'px' : this.iframe_height + 'px';
|
||||
this.iframe_obj.style.overflow = 'hidden';
|
||||
this.iframe_obj.style.display = '';
|
||||
|
||||
// Add environmentals..
|
||||
this.iframe_obj.msg_open = 1;
|
||||
this.iframe_obj.iframe_loaded = 0;
|
||||
this.iframe_obj.iframe_init = 0;
|
||||
|
||||
// Attach iFrame inside our DIV
|
||||
this.iframe_add_to_div_obj.appendChild( this.iframe_obj );
|
||||
|
||||
// Add handler
|
||||
if ( is_ie )
|
||||
{
|
||||
this.iframe_obj.style.backgroundColor = 'transparent';
|
||||
this.iframe_obj.allowTransparency = true;
|
||||
this.iframe_obj.onreadystatechange = this.iframe_on_load_ie;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.iframe_obj.onload = this.iframe_onload;
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// Safari bug: Onload events don't fire
|
||||
// when the parent DIV is hidden.
|
||||
//-----------------------------------------
|
||||
|
||||
if ( is_safari )
|
||||
{
|
||||
this.iframe_parent_div_obj.style.display = '';
|
||||
}
|
||||
else
|
||||
{
|
||||
this.iframe_parent_div_obj.style.display = 'none';
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// INIT cover div
|
||||
//-----------------------------------------
|
||||
|
||||
if ( typeof this.message_div_obj != 'undefined' )
|
||||
{
|
||||
this.message_div_obj.style.width = typeof this.iframe_parent_div_obj.style.width != 'undefined' ? this.iframe_parent_div_obj.style.width : '100%';
|
||||
this.message_div_obj.style.height = this.iframe_parent_div_obj.offsetHeight ? this.iframe_parent_div_obj.offsetHeight : '120px';
|
||||
this.message_div_obj.style.position = 'relative';
|
||||
this.message_div_obj.style.display = 'none';
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// Show cover div during INIT
|
||||
//-----------------------------------------
|
||||
|
||||
this.show_message( this.lang['init_progress'] );
|
||||
};
|
||||
|
||||
/**
|
||||
* Draws status bar
|
||||
* Using "ipsattach" as is called in an event function
|
||||
*/
|
||||
this.init_status_bar = function()
|
||||
{
|
||||
//-----------------------------------------
|
||||
// INIT
|
||||
//-----------------------------------------
|
||||
|
||||
var _html = '';
|
||||
|
||||
if ( typeof ipsattach.status_div_obj != 'undefined' )
|
||||
{
|
||||
try
|
||||
{
|
||||
ipsattach.status_msg = ipsattach.lang[ ipsattach.status_msg ];
|
||||
}
|
||||
catch(error) { }
|
||||
|
||||
if ( ipsattach.status_msg )
|
||||
{
|
||||
if ( ipsattach.status_is_error )
|
||||
{
|
||||
_html += "<img src='" + this.images_url + "/folder_attach_images/attach_error.png' border='0' style='vertical-align:middle' alt='" + ipb_global_lang['general_error'] + "' /> " + ipsattach.status_msg;
|
||||
}
|
||||
else
|
||||
{
|
||||
_html += "<img src='" + this.images_url + "/folder_attach_images/attach_ok.png' border='0' style='vertical-align:middle' alt='" + ipb_global_lang['general_OK'] + "' /> " + ipsattach.status_msg;
|
||||
}
|
||||
}
|
||||
|
||||
ipsattach.status_div_obj.innerHTML = _html;
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// Reset pending...
|
||||
//-----------------------------------------
|
||||
|
||||
ipsattach.has_upload_pending = 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* Manually show the iframe message
|
||||
*/
|
||||
this.iframe_on_un_load = function( msg )
|
||||
{
|
||||
//-----------------------------------------
|
||||
// Message...
|
||||
//-----------------------------------------
|
||||
|
||||
msg = typeof(msg) != 'undefined' ? ipsattach.lang[ msg ] : ipsattach.lang['uploading_file'];
|
||||
|
||||
//-----------------------------------------
|
||||
// Show...
|
||||
//-----------------------------------------
|
||||
|
||||
if ( this.iframe_obj.iframe_loaded )
|
||||
{
|
||||
this.iframe_obj.iframe_loaded = 0;
|
||||
this.iframe_obj.msg_open = 1;
|
||||
|
||||
ipsattach.show_message( msg );
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Each time the window is loaded, close
|
||||
* any open messages
|
||||
*/
|
||||
this.iframe_onload = function( e )
|
||||
{
|
||||
//-----------------------------------------
|
||||
// First load?
|
||||
//-----------------------------------------
|
||||
|
||||
if ( ! this.iframe_init )
|
||||
{
|
||||
this.iframe_init = 1;
|
||||
this.iframe_loaded = 1;
|
||||
|
||||
if ( this.msg_open )
|
||||
{
|
||||
this.msg_open = 0;
|
||||
|
||||
ipsattach.hide_message();
|
||||
}
|
||||
|
||||
window.frames[ this.id ].document.onmousedown = menu_action_close;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.iframe_loaded = 1;
|
||||
window.frames[ this.id ].document.onmousedown = menu_action_close;
|
||||
|
||||
if ( this.msg_open )
|
||||
{
|
||||
this.msg_open = 0;
|
||||
|
||||
ipsattach.hide_message();
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// Run command?
|
||||
//-----------------------------------------
|
||||
|
||||
if ( ipsattach.onload_function )
|
||||
{
|
||||
ipsattach.onload_function();
|
||||
}
|
||||
}
|
||||
|
||||
// INIT stuff
|
||||
ipsattach.init_status_bar();
|
||||
// Set status counter correct
|
||||
ipsattach.set_attach_count_status();
|
||||
};
|
||||
|
||||
/**
|
||||
* IE only calls onload once... So subsequent loads
|
||||
* don't do anything.. hence the readystate change
|
||||
*/
|
||||
this.iframe_on_load_ie = function( e )
|
||||
{
|
||||
//-----------------------------------------
|
||||
// First load?
|
||||
//-----------------------------------------
|
||||
|
||||
if ( this.readyState == 'complete' )
|
||||
{
|
||||
if ( ! this.iframe_init )
|
||||
{
|
||||
this.iframe_init = 1;
|
||||
this.iframe_loaded = 1;
|
||||
window.frames[ this.id ].document.onmousedown = menu_action_close;
|
||||
|
||||
if ( this.msg_open )
|
||||
{
|
||||
this.msg_open = 0;
|
||||
|
||||
ipsattach.hide_message();
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
this.iframe_loaded = 1;
|
||||
window.frames[ this.id ].document.onmousedown = menu_action_close;
|
||||
|
||||
if ( this.msg_open )
|
||||
{
|
||||
this.msg_open = 0;
|
||||
ipsattach.hide_message();
|
||||
}
|
||||
}
|
||||
|
||||
//window.frames[ this.id ].document.getElementsByTagName('html')[0].allowTransparency = true;
|
||||
window.frames[ this.id ].document.getElementsByTagName('html')[0].style.background = 'transparent';
|
||||
|
||||
//alert( window.frames[ this.id ].document.getElementsByTagName('html')[0].outerHTML );
|
||||
|
||||
//-----------------------------------------
|
||||
// Run command?
|
||||
//-----------------------------------------
|
||||
|
||||
if ( ipsattach.onload_function )
|
||||
{
|
||||
ipsattach.onload_function();
|
||||
}
|
||||
|
||||
// INIT stuff
|
||||
ipsattach.init_status_bar();
|
||||
// Set status counter correct
|
||||
ipsattach.set_attach_count_status();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Show message DIV
|
||||
*/
|
||||
this.show_message = function( msg )
|
||||
{
|
||||
//-----------------------------------------
|
||||
// Safari bug: Onload events don't fire
|
||||
// when the parent DIV is hidden.
|
||||
//-----------------------------------------
|
||||
|
||||
if ( is_safari )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( typeof ipsattach.message_div_obj != 'undefined' )
|
||||
{
|
||||
ipsattach.message_div_obj.style.display = '';
|
||||
ipsattach.message_span_obj.innerHTML = msg;
|
||||
|
||||
// Hide other div
|
||||
ipsattach.iframe_parent_div_obj.style.display = 'none';
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Hide message DIV
|
||||
*/
|
||||
this.hide_message = function()
|
||||
{
|
||||
//-----------------------------------------
|
||||
// Safari bug: Onload events don't fire
|
||||
// when the parent DIV is hidden.
|
||||
//-----------------------------------------
|
||||
|
||||
if ( is_safari )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( typeof ipsattach.message_div_obj != 'undefined' )
|
||||
{
|
||||
ipsattach.message_div_obj.style.display = 'none';
|
||||
ipsattach.message_span_obj.innerHTML = '';
|
||||
|
||||
// Show other div
|
||||
ipsattach.iframe_parent_div_obj.style.display = '';
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Mouseover events
|
||||
*
|
||||
* @param Event Object
|
||||
*/
|
||||
this.current_menu_mouseover = function(e)
|
||||
{
|
||||
e = ipsclass.cancel_bubble(e, true);
|
||||
|
||||
if ( e.type == 'click' )
|
||||
{
|
||||
this._onclick(e);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Shows the pop-up menu
|
||||
* First, dynamically writes menu - then passes to ipsmenu class to show
|
||||
*
|
||||
* @param Object Object
|
||||
*/
|
||||
this.current_menu_button_show = function(obj)
|
||||
{
|
||||
ipsattach.init_current_menu(obj);
|
||||
this._open(obj);
|
||||
};
|
||||
|
||||
/**
|
||||
* Roll over effect for the menu
|
||||
* ^^
|
||||
*
|
||||
* @param Event Object
|
||||
*/
|
||||
this.menu_onmouse_event = function( e )
|
||||
{
|
||||
e = ipsclass.cancel_bubble(e, true);
|
||||
|
||||
if ( e.type == 'mouseover' )
|
||||
{
|
||||
this.className = ipsattach.css_menu_row_over;
|
||||
}
|
||||
else if ( e.type == 'mouseout' )
|
||||
{
|
||||
this.className = ipsattach.css_menu_row;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user