• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Warten, bevor neu geladen wird...

DerRoman

New member
Hallo Leute,

ich nutze aktuell eine Community-Software, welche leider JS-Probleme aufweist, die wohl darauf hindeuten, dass das verwendete jQuery mit einer anderen JS-"Lib" in Konkurrenz steht...

Um das Problem zu beheben wäre sehr sehr viel Arbeit nötig... Ich würde mich ja schon über eine Notlösung sehr freuen ;-)


Folgendes speziell: Wenn ein Benutzer einen Kommentar abgibt, wird dieses eingetragen aaaaaber die Seite aktualisiert nicht. Das führt zu vielen Mehrfachpostings...

Bisher habe ich dies so gelöst:

HTML:
<button id="wall-submit" class="button" onclick="joms.walls.add('<?php echo $uniqueId; ?>', '<?php echo $ajaxAddFunction;?>');location.reload();" name="save"><?php echo JText::_('CC WALL ADD COMMENT');?>

Allerdings kann hier ein Problem auftreten: Der Text wird nicht gleich mit übertragen. Wie ließe sich das verhindern?

Die Funktion, die für das Speichern des Eintrags zuständig ist, verbirgt sich in einer externen Datei:

PHP:
	function saveWall( $uniqueId , $message , $appType , &$creator , $isOwner )
	{
		$my =& CFactory::getUser();

		// Add some required parameters, otherwise assert here
		CError::assert( $uniqueId, '' , '!empty' , __FILE__ , __LINE__ );
		CError::assert( $appType, '' , '!empty' , __FILE__ , __LINE__ );
		CError::assert( $message, '' , '!empty' , __FILE__ , __LINE__ );
		CError::assert( $my->id, '', '!empty' , __FILE__ , __LINE__ );

		// Load the models
		CFactory::load( 'models' , 'wall' );
		CFactory::load( 'helpers' , 'url' );
		$wall				=& JTable::getInstance( 'Wall' , 'CTable' );

		// Get current date
		$now				=& JFactory::getDate();
		$now				= $now->toMySQL();
		
		// Set the wall properties
		$wall->type			= $appType;
		$wall->contentid	= $uniqueId;
		$wall->post_by		= $creator->id;
		$wall->comment		= $message;
		$wall->date			= $now;
		$wall->published	= 1;
		
		// @todo: set the ip address
		$wall->ip			= $_SERVER['REMOTE_ADDR'];
		
		// Store the wall message
		$wall->store();

		// Clear unnecessary HTML tags.
		$wall->comment		= htmlspecialchars( $wall->comment , ENT_QUOTES , 'UTF-8' );

		// Convert it to array so that the walls can be processed by plugins
		$args 			= array();
		$args[0]		=& $wall;

		// Trigger the wall comments
		CWallLibrary::triggerWallComments( $args );
		
		// Apply any post processing on the content 
		$wall->comment = CWallLibrary::_processWallContent($wall->comment);


		$date			= cGetDate( $wall->date );
		$tmpl			= new CTemplate();

		CFactory::load('helpers' , 'user');
		$avatarHTML		= cGetUserThumb( $wall->post_by , 'avatar' );
		
		$tmpl->set( 'id' , 			$wall->id );
		$tmpl->set( 'author' ,		$creator->getDisplayName() );
		$tmpl->set( 'authorLink',	CUrl::build( 'profile' , '' , array( 'userid' => $creator->id ), true ) );
		$tmpl->set( 'avatarHTML', 	$avatarHTML );
		$tmpl->set( 'created' ,		$date->toFormat() );
		$tmpl->set( 'content' , 	$wall->comment );
		$tmpl->set( 'avatar' ,		$creator->getThumbAvatar() );
		$tmpl->set( 'isMine' ,		$isOwner ); 
		
		$wallData	= new stdClass();
		
		$wallData->id		= $wall->id;
		$wallData->content	= $tmpl->fetch( 'wall.content' );
	//START ROMAN
$api_AUP = JPATH_SITE.DS.'components'.DS.'com_alphauserpoints'.DS.'helper.php';
if ( file_exists($api_AUP))
{
    require_once ($api_AUP);
    AlphaUserPointsHelper::newpoints( 'plgaup_writecomment' );
}
//END ROMAN	
		return $wallData;
	}

Jetzt ist die Frage: Wie löse ich das?

Kann man vor dem Reload evtl. x Sekunden warten? Wenn ja: Wie macht man das und ließe sich dies visualisieren ("Bitte warten"-Beschriftung des Buttons)...

Ich wäre für Hilfe sehr sehr dankbar :)
 
Zurück
Oben