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:
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:
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
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