Italian SMF

Supporto SMF => SMF 2.0.x => Mods - Modifiche SMF => Discussione aperta da: Flavio93Zena il Venerdì - 18 Ottobre 2019 - 20:07

Titolo: Modifica ILA e rimozione sistema allegati standard
Inserito da: Flavio93Zena il Venerdì - 18 Ottobre 2019 - 20:07
Ciao!
Un forum sul quale lavoro vuole rimuovere la possibilità di utilizzare gli allegati alla fine dei post, rimpiazzandoli con la mod ILA ( https://github.com/Spuds/SMF-ILA ).
Da post.template.php

// If this post already has attachments on it - give information about them.
if (!empty($context['current_attachments']))
{
echo '
<dl id="postAttachment">
<dt>
', $txt['attached'], ':
</dt>
<dd class="smalltext">
<input type="hidden" name="attach_del[]" value="0" />
', $txt['uncheck_unwatchd_attach'], ':
</dd>';
foreach ($context['current_attachments'] as $attachment)
echo '
<dd class="smalltext">
<label for="attachment_', $attachment['id'], '"><input type="checkbox" id="attachment_', $attachment['id'], '" name="attach_del[]" value="', $attachment['id'], '"', empty($attachment['unchecked']) ? ' checked="checked"' : '', ' class="input_check" /> ', $attachment['name'], (empty($attachment['approved']) ? ' (' . $txt['awaiting_approval'] . ')' : ''), '</label>
</dd>';
echo '
</dl>';
}

// Is the user allowed to post any additional ones? If so give them the boxes to do it!
if ($context['can_post_attachment'])
{
echo '
<dl id="postAttachment2">
<dt>
', $txt['attach'], ':
</dt>
<dd class="smalltext">
<input type="file" size="60" name="attachment[]" id="attachment1" class="input_file" />';

// ILA in line attachment changes

echo '
<select id="inline_format" onclick="if(this.value != \'\'){ila_text = \'[\'+this.value+\'=', (count($context['current_attachments']) + 1), ']\';oEditorHandle_', $context['post_box_name'], '.insertText(ila_text, false, true);return false;}">
<option value="attach">', $txt['ila_option1'], '</option>';

/* // ILA in line attachment changes, end-of-post attachments disabled

echo '
<select id="inline_format" onchange="if(this.value != \'\'){ila_text = \'[\'+this.value+\'=', (count($context['current_attachments']) + 1), ']\';oEditorHandle_', $context['post_box_name'], '.insertText(ila_text, false, true);return false;}">
<option value="" selected="selected">', $txt['ila_title'], '&nbsp;</option>
<option value="attach">', $txt['ila_option1'], '</option>';
*/
// Show all options or simple ILA menu
if (!isset($modSettings['ila_basicmenu']) || (isset($modSettings['ila_basicmenu']) && empty($modSettings['ila_basicmenu'])))
{
echo '
<option value="attachimg">', $txt['ila_option2'], '</option>
<option value="attachurl">', $txt['ila_option3'], '</option>
<option value="attachmini">', $txt['ila_option4'], '</option>';
}
echo '
</select>';

// Add help
echo '
<a href="', $scripturl, '?action=helpadmin;help=ILA_InLineAttachments_help" onclick="return reqWin(this.href);" class="help"><img src="', $settings['images_url'], '/helptopics.gif" alt="', $txt['help'], '" align="top" /></a>';

// Add clean me up back
echo '
(<a href="javascript:void(0);" onclick="cleanFileInput(\'attachment1\');">', $txt['clean_attach'], '</a>)';

// set more menu items
if (!isset($modSettings['ila_basicmenu']) || (isset($modSettings['ila_basicmenu']) && empty($modSettings['ila_basicmenu'])))
$ila_menu = '<option value="selected">'. $txt['ila_title'] . '</option><option value="attach">' . $txt['ila_option1'] . '</option><option value="attachimg">' . $txt['ila_option2'] . '</option><option value="attachurl">' . $txt['ila_option3'] . '</option><option value="attachmini">' . $txt['ila_option4'] . '</option>';
else
$ila_menu = '<option value="attach">' . $txt['ila_option1'] . '</option>';

/*Disabled end of post attachments
        else
$ila_menu = '<option value="selected">' . $txt['ila_title'] . '</option><option value="attach">' . $txt['ila_option1'] . '</option>';*/

// END ILA in line attachment changes

// Show more boxes only if they aren't approaching their limit.
if ($context['num_allowed_attachments'] > 1)
echo '
<script type="text/javascript"><!-- // --><![CDATA[
var allowed_attachments = ', $context['num_allowed_attachments'], ';
var current_attachment = 1;

var count_attachments = ', count($context['current_attachments']) ,' + 1;
function createLink(count_attachments)
{
var insert_value = document.getElementById(\'inline_format\'+count_attachments).value;
if ( insert_value != "" ) {
ila_text = "["+insert_value+"="+count_attachments+"]";
oEditorHandle_', $context['post_box_name'], '.insertText(ila_text, false, true);
}
return false;
}

function addAttachment()
{
allowed_attachments = allowed_attachments - 1;
current_attachment = current_attachment + 1;
if (allowed_attachments <= 0)
return alert("', $txt['more_attachments_error'], '");

count_attachments = count_attachments + 1 ;
setOuterHTML(document.getElementById("moreAttachments"), \'<dd class="smalltext"><input type="file" size="60" name="attachment[]" id="attachment\' + current_attachment + \'" class="input_file" /> <select id="inline_format\'+count_attachments+\'" onchange="createLink(\\\'\'+ count_attachments +\'\\\')" style="">', $ila_menu ,'</select>&nbsp;<a href="', $scripturl, '?action=helpadmin;help=ILA_InLineAttachments_help" onclick="return reqWin(this.href);" class="help"><img src="', $settings['images_url'], '/helptopics.gif" alt="', $txt['help'], '" align="top" /></a>&nbsp;(<a href="javascript:void(0);" onclick="cleanFileInput(\\\'attachment\' + current_attachment + \'\\\');">', $txt['clean_attach'], '</a>)<dd class="smalltext" id="moreAttachments"><a href="#" onclick="addAttachment(); return false;">(', $txt['more_attachments'], ')<\' + \'/a><\' + \'/dd><\' + \'/dd>\');

return true;
}
// ]]></script>
</dd>
<dd class="smalltext" id="moreAttachments"><a href="#" onclick="addAttachment(); return false;">(', $txt['more_attachments'], ')</a></dd>';


Ho fatto un backup abbastanza visibile del codice originale, cambiato l'evento onchange in onclick visto che l'opzione viene rimossa del tutto e non funzionerebbe senza il cambio, da qui l'onclick che inserisce molto convenientemente [attach=1] al post, che non è male :) e ho anche rimosso (ovviamente) l'opzione end-of-post.
Il problema nasce però quando voglio utilizzare più allegati... Sembra che non "parta" proprio la funzione, perchè non compare [attach=2] nell'editor (non compare proprio nulla).
Il primo box invece funziona, e il codice per la funzione di conteggio allegati non è stata modificata... Dove sta il problema? ??? Sarò io stanco dopo aver scalato oggi pomeriggio ma proprio non lo vedo :(

Grazie in anticipo ::)

P.S.: no, niente errori nella console del browser o in amministrazione.
Titolo: Re:Modifica ILA e rimozione sistema allegati standard
Inserito da: emanuele il Venerdì - 18 Ottobre 2019 - 20:30
hmm... ?
<option value="attach" selected="selected">
Titolo: Re:Modifica ILA e rimozione sistema allegati standard
Inserito da: Flavio93Zena il Venerdì - 18 Ottobre 2019 - 21:15
Nope :(
C'è una piccola ma sostanziale differenza nel comportamento dei dropdown della quale mi sono accorto ora... Nel primo allegato appena clicco e rilascio il dropdown si chiude automaticamente, e parte :)
Nel secondo invece appena rilascio il dropdown resta aperto e devo selezionare manualmente inline, e non viene comunque inserito nel post ???
Titolo: Re:Modifica ILA e rimozione sistema allegati standard
Inserito da: emanuele il Venerdì - 18 Ottobre 2019 - 21:25
Quel select appare per ogni allegato?
Quindi hai:
| Attachment 1 <select> | Attachment 2 <select> | ecc.
E il select di Attachment 1 funziona, mentre quello del 2 no?
Titolo: Re:Modifica ILA e rimozione sistema allegati standard
Inserito da: Flavio93Zena il Venerdì - 18 Ottobre 2019 - 21:31
Sì funziona ma ci sono arrivato proprio controllandolo :D

Il secondo è
onchange="createLink(\\\'\'+ count_attachments +\'\\\')
per cui...
onclick="createLink(\\\'\'+ count_attachments +\'\\\')
e funziona :D Grazie lo stesso perchè controllando più approfonditamente il select me ne sono accorto ^_^
Titolo: Re:Modifica ILA e rimozione sistema allegati standard
Inserito da: Flavio93Zena il Venerdì - 01 Novembre 2019 - 02:36
*sigh*
Odio gli utenti... Devo riaprire perchè la gente non è capace di cliccare su "Insert image", e questo fondamentalmente mantiene gli allegati nella forma originale perchè la mod ILA non entra in funzione -_-
In Sources/Post.php, in Post2(), sarebbe possibile aggiungere un check per controllare che il corpo del testo contenga [attach=X] oppure fare in modo che venga aggiunto automaticamente con il primo click causa utenti imbecilli?

Cosa ho provato
<input type="file" size="60" name="attachment[]" id="attachment1" class="input_file" <select id="inline_format" onclick="if(this.value != \'\'){ila_text = \'[\'+this.value+\'=', (count($context['current_attachments']) + 1), ']\';oEditorHandle_', $context['post_box_name'], '.insertText(ila_text, false, true);return false;}">
<option value="attach">', $txt['ila_option1'], '</option></input>'

Cioè infilare il select dentro l'input... Funziona comunque al secondo click e invece di ritornare [attach=1] ritorna [C:\fakepath\nomeimmagine.jpg]... Forse sulla buona strada? Meh... Te che dici? :thinking:
Titolo: Re:Modifica ILA e rimozione sistema allegati standard
Inserito da: emanuele il Venerdì - 15 Novembre 2019 - 01:16
Così "a naso", non saprei cosa dire.
Dovresti fare in modo che quando l'upload è finito, invece di generare il select inserisca direttamente il bbc nella textarea.
Fattibile quasi sicuramente, probabilmente un po' macchinoso.