AD Flash modul hibajavítása - jó így?

szantog képe

Az AD Flash modul nem kezeli az Advertisment modul általános beállításainál kiválasztható Click-through target értéket. Konkrétan azt jelenti, hogyha itt beállítjuk, hogy új böngészőablakban jelenjen meg a link, akkor az nem csinál semmit flash reklámoknál. A modulhoz ilyen issue-t nem találtam.
Beletúrva a modulba láttam, hogy márpedig az AD Flash dolgozik ezzel a változóval, mégpedig a theme függvényében:

function theme_ad_flash_render($ad, $flash) {
 
	// Get the groups (terms) this ad belongs to and use the first one
	$terms = taxonomy_node_get_terms($ad->aid);
	$term = array_pop($terms);
	$term = strtolower($term->name);
 
	$flash->type = strtolower(pathinfo($flash->path, PATHINFO_EXTENSION));
 
	//jrm addition
	$flash_path = preg_replace('&'. drupal_get_path('module', 'ad') .'/&', '', file_create_url($flash->filepath));
	$target = variable_get('ad_link_target', '_self');
 
	$output = "<div class=\"flash-advertisement flash-advertisement-{$flash->type} ad-group-{$term}\" id=\"ad-$ad->aid\">";
 
	$output .= theme('ad_flash_' . $flash->type . '_render', $ad, $flash);
 
	$output .= "</div>";
 
	return $output;

A kódból látszik, hogy a végleges html kimenetet a theme_ad_flash_flashtípusa_render nevű függvény állítja elő. Mivel swf flasht paraméterezünk, ezért a theme_ad_flash_swf_render függvényt kell megnézni. Mivel lövésem sincs a flash paraméterezéséhez, innen vettem a formátumot.

Ez a régi theme_ad_flash_swf_render:

function theme_ad_flash_swf_render($ad, $flash) {
    // The .swf extensions isn't needed, because we use Adobe scripts
    $url = str_replace('.swf', '', $flash->path);
 
    $output = "<script type='text/javascript'>AC_FL_RunContent('codebase','http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0','src','" . $url . "','quality','high','pluginspage','http://www.macromedia.com/go/getflashplayer','movie','" . $url ."','width','" . $flash->width . "','height','" . $flash->height . "','menu','false','wmode','transparent','flashvars','clickTAG=" . $ad->redirect . "/@HOSTID___');</script>";
    return $output;
}

Így javítottam (a return $output előtti és a 4. sorban a változás):

function theme_ad_flash_swf_render($ad, $flash) {
    // The .swf extensions isn't needed, because we use Adobe scripts
    $url = str_replace('.swf', '', $flash->path);
	$target = variable_get('ad_link_target', '_self');
    $output = "<script type='text/javascript'>AC_FL_RunContent('codebase','http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0','src','" . $url . "','quality','high','pluginspage','http://www.macromedia.com/go/getflashplayer','movie','" . $url ."','width','" . $flash->width . "','height','" . $flash->height . "','menu','false','wmode','transparent','flashvars','clickTAG=" . $ad->redirect . "/@HOSTID___&clickTARGET=" .$target . "');</script>";
    return $output;
}

Így most működik, de két dolog miatt írtam ezt le.
1. Nálam a flash paraméterezés elég sötét folt, nem csináltam rosszat a javítással?
2. Ha ez így jó, valaki beküldhetné patch-ként, az én readonly angol tudásommal és 0 patchkészítési tapasztalatommal ez nyilván nem fog menni.

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
szantog képe

Hopi, validálási hiba, és nem igazán értem. Mi baja a &-el?

cannot generate system identifier for general entity "clickTARGET"
 
…/ad/redirect/300/t2&clickTARGET=_blank');</script></div><div 
 
An entity reference was found in the document, but there is no reference by that name defined. Often this is caused by misspelling the reference name, unencoded ampersands, or by leaving off the trailing semicolon (;). The most common cause of this error is unencoded ampersands in URLs as described by the WDG in "Ampersands in URLs".
 
Entity references start with an ampersand (&) and end with a semicolon (;). If you want to use a literal ampersand in your document you must encode it as "&amp;" (even inside URLs!). Be careful to end entity references with a semicolon or your entity reference may get interpreted in connection with the following text. Also keep in mind that named entity references are case-sensitive; &Aelig; and &aelig; are different characters.
 
If this error appears in some markup generated by PHP's session handling code, this article has explanations and solutions to your problem.
 
Note that in most documents, errors related to entity references will trigger up to 5 separate messages from the Validator. Usually these will all disappear when the original problem is fixed.
0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

pp képe

jobban még nem volt időm megnézni, de erre tippelek.

pp

0
0
szantog képe

OMG! Ezzel kezdtem a javítást, csak a kettőspont lemaradt a végéről..

0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

pp képe

Nem kettőspont, pontosvessző!

pp

0
0
szantog képe

Asszem kicsit fáradt vagyok.. ; == kettőspont ma nálam..

0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

szantog képe

Szóval az eddigiek fényében a javítás javítása:

function theme_ad_flash_swf_render($ad, $flash) {
    // The .swf extensions isn't needed, because we use Adobe scripts
    $url = str_replace('.swf', '', $flash->path);
$target = variable_get('ad_link_target', '_self');
    $output = "<script type='text/javascript'>AC_FL_RunContent('codebase','http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0','src','" . $url . "','quality','high','pluginspage','http://www.macromedia.com/go/getflashplayer','movie','" . $url ."','width','" . $flash->width . "','height','" . $flash->height . "','menu','false','wmode','transparent','flashvars','clickTAG=" . $ad->redirect . "/@HOSTID___&amp;clickTARGET=" .$target . "');</script>";
    return $output;
0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.