Dobrý deň,
mám jeden web pomocou cms phpfusion (v7).
Existuje tam preň infusion, ak niekto pozná, že v celom webe mi upraví farbu nickov tak,
že podľa danej skupiny mi jednoducho sfarbí nicky členov.
Táto funkcia sa volá "nicks_mod_panel" a všetko funguje ako má, čiže ak sa niekto
nachádza v nejakej skupine a ja si to v administrácií nastavím, všetko ide ako má. až na jednu vec.
Stiahol som si infusion - jquery chat panel.
Tento panel ma v sebe refresh a je teda možné bez refreshovania stránky refreshnúť obsah len pre daný panel.
Tento refresh je však nakódovaný v javascripte a keď načítam stránku, farby nickom sa zobrazia správne,
no keď dám refresh panelu, farby nickom sa jednoducho upravia na defaultné.
Kód pre zobrazenia nicku na webe je (v danom panely - tento pred refereshom funguje):
Kód:
echo "<a href='".BASEDIR."profile.php?lookup=".$data['shout_name']."' class='shoutboxname' class='side'>".$data['user_name']."</a>\n";
no po refreshi už neukazuje tento link (hore), ale už z javascriptu a tam je kód takýto.
Kód:
var author = "<a href='"+basedir+"profile.php?lookup="+$("authorname",shout).text()+"' class='shoutboxname'>"+$("authoruname",shout).text()+"</a>";
funckia, ktorá prepisuje farbu nickom vyzerá takto
Kód:
function colore_nicks($buf) {
include INFUSIONS.'nicks_mod_panel/nicks_mod_cache.php';
if(!empty($nicks_mod_cache)) {
preg_match_all('#<a.*?href=\''.BASEDIR.'profile\.php\?lookup=([0-9]+)\'.*?>#', $buf, $matches);
$matches = array_unique($matches[1]);
if(!empty($matches)) {
$users_ids = '';
foreach($matches as $user_id) { $users_ids .= ($users_ids ? ',' : '').$user_id; }
unset($matches);
$result = dbquery('SELECT user_id, user_groups, user_level, user_primarygroup FROM '.DB_USERS.' WHERE (user_groups !="" OR user_level IN (102,103)) AND user_id IN ('.$users_ids.')');
while($data = dbarray($result)) {
$user_groups = (strpos($data['user_groups'], ".") == 0 ? explode(".", substr($data['user_groups'], 1)) : explode(".", $data['user_groups']));
if($data['user_level']=='102' || $data['user_level']=='103') { $user_groups[] = "l".$data['user_level']; }
if(isset($data['user_primarygroup']) && count($user_groups) > 1 && array_key_exists($data['user_primarygroup'], $nicks_mod_cache)) {
$buf = preg_replace('#<a([^<>]*)href=\''.BASEDIR.'profile\.php\?lookup='.$data['user_id'].'\'([^<>]*)>([-0-9A-Z_@\s]*)</a>#si', '<a\\1href=\''.BASEDIR.'profile.php?lookup='.$data['user_id'].'\'\\2><span style=\'color:'.$nicks_mod_cache[$data['user_primarygroup']][0].';'.$nicks_mod_cache[$data['user_primarygroup']][2].'\'>'.$nicks_mod_cache[$data['user_primarygroup']][1].'\\3</span></a>', $buf);
} else {
foreach($user_groups as $user_group) {
if(array_key_exists($user_group, $nicks_mod_cache)) {
$buf = preg_replace('#<a([^<>]*)href=\''.BASEDIR.'profile\.php\?lookup='.$data['user_id'].'\'([^<>]*)>([-0-9A-Z_@\s]*)</a>#si', '<a\\1href=\''.BASEDIR.'profile.php?lookup='.$data['user_id'].'\'\\2><span style=\'color:'.$nicks_mod_cache[$user_group][0].';'.$nicks_mod_cache[$user_group][2].'\'>'.$nicks_mod_cache[$user_group][1].'\\3</span></a>', $buf);
break;
}
}
}
}
}
}
return $buf;
}
add_handler("colore_nicks");
Neviete niekto poradiť, aby som to upravil tak, aby to vedel rozoznať i ten kód v tom javascripte? som z toho už troška magor, hnevá ma to už pár dní a neviem to rozlúsknúť, aj keď je to určite len nejaká drobnosť.
Dúfam, že budete vedieť poradiť, pretože ja sa v tom preg_replace vôbec nevyznám.
Ďakujem za rady.
S pozdravom
Jakub