anulare
Afişează rezultate pentru 
Caută în schimb 
Ați dorit să scrieți: 

Cum deschidem imaginile din mesajele private, la dimensiunea originală? bonus: image gallery fixes

Viper
Cunoscător certificat

Primești în privat multe imagini cu routere? Te enervează că nu poți să vezi clar dacă au 8 sau 12 antene?

Avem soluția! 🙃 (sub formă de UserScript care funcționează cu extensiile Violentmonkey / Tampermonkey / Greasemonkey). Personal folosesc Violentmonkey, e open source.

Anunţ
// ==UserScript==
// @name        Comunitatea Orange - PM Images Fix
// @namespace   Violentmonkey Scripts
// @match       https://comunitate.orange.ro/t5/notes/*
// @version     1.0.0
// @description Reconstruiește imaginile din PM să poată fi deschise la rezoluția originală
// @author      Viper @ comunitate.orange.ro
// ==/UserScript==

(function() {
    'use strict';

    function rebuildPMImages() {
        const images = document.querySelectorAll('img[src*="/image-id/"]:not(.procesata)');

        images.forEach(oldImg => {
            oldImg.classList.add('procesata');

            const angularWrapper = oldImg.closest('span[class*="lia-inline-image"], span[class*="lia-image"]');

            if (angularWrapper) {
                try {
                    // Folosim API-ul URL pentru manipulare "chirurgicală"
                    let urlObj = new URL(oldImg.src);

                    // 1. Tăiem din "cale" tot ce e după ID-ul imaginii
                    const pathMatch = urlObj.pathname.match(/(.*?\/image-id\/[a-zA-Z0-9]+)/);
                    if (pathMatch) {
                        urlObj.pathname = pathMatch[1];
                    }

                    // 2. Ștergem doar limitatorul de rezoluție (dacă există)
                    urlObj.searchParams.delete('px');

                    // Parametrul ?v=v2 (și oricare altul) RĂMÂNE intact automat
                    const stealthUrl = urlObj.toString();

                    // 3. Construim link-ul curat
                    const cleanLink = document.createElement('a');
                    cleanLink.href = stealthUrl;
                    cleanLink.target = '_blank';
                    cleanLink.title = "Click pentru a deschide imaginea la rezoluția originală";
                    cleanLink.style.cssText = 'display: inline-block; cursor: zoom-in !important; margin: 4px 0;';

                    // 4. Clonăm miniatura pentru PM
                    const cleanImg = document.createElement('img');
                    cleanImg.src=oldImg.src;
                    cleanImg.alt = oldImg.alt || "Imagine PM";
                    cleanImg.style.cssText = 'max-width: 100%; height: auto; display: block; border-radius: 4px; border: 1px solid #e0e0e0;';

                    cleanLink.appendChild(cleanImg);

                    // 5. Înlocuim span-ul
                    angularWrapper.parentNode.replaceChild(cleanLink, angularWrapper);

                } catch (e) {
                    console.error("Eroare la procesarea URL-ului:", e);
                }
            }
        });
    }

    rebuildPMImages();
    new MutationObserver(rebuildPMImages).observe(document.body, {childList: true, subtree: true});

})();

LE: Pentru Safari am găsit aplicație (extensie): Userscripts.

Pe iPhone e destul de dificil de salvat scriptul copiat de mai sus fiindcă nu are editor inclus, așa că am urcat scriptul pe github sub formă de gist, aici: orange_fix_pm_images.user.js

Se instalează aplicația de mai sus, se activează din setările Safari. 
Se ține apăsat pe link-ul către script, se selectează "Download Linked File", se mută fișierul descărcat în stocarea iPhone-ului în folderul Userscripts (creat de către aplicație).

LE2: Bonus, skip la galerie pentru imaginile de pe forum: orange_fix_forum_images.user.js

LE3: Ca alternativă mai puțin "nucleară" pentru imaginile de pe forum (nu din mesajele private), am reparat galeria: orange_fix_forum_gallery.user.js 

 

Anunţ
// ==UserScript==
// @name        Comunitatea Orange - Image Gallery Fixes
// @namespace   Violentmonkey Scripts
// @match       https://comunitate.orange.ro/*
// @exclude     https://comunitate.orange.ro/t5/notes/*
// @version     1.0.4
// @description Forțează afișarea butonului de descărcare, ascunde butoanele nefuncționale (Kudos și Report), adaugă un buton de View.
// @author      Viper @ comunitate.orange.ro
// ==/UserScript==

(function() {
    'use strict';

    // --- 1. INJECTĂM REGULILE CSS ---
    const customStyle = document.createElement('style');
    customStyle.innerHTML = `
        /* --- 1. Ascundem butoanele de Kudos și Report --- */
        li\\:kudos-kudo, .lia-lightbox-actions .lia-kudos-kudo,
        li\\:moderation-flag-entity, .lia-moderation-flag-entity {
            display: none !important;
        }

        /* --- 2. Arătăm Download și View --- */
        li\\:media-download-media, .lia-media-download-icon,
        .lia-image-download-link, .custom-view-btn {
            display: inline-block !important;
            visibility: visible !important;
            opacity: 1 !important;
        }

        /* --- 3. Hitbox generos și scut anti-suprapunere --- */
        .lia-image-download-link, .custom-view-btn-link {
            padding: 12px 16px !important;
            margin: 4px !important;
            min-width: 44px !important;
            min-height: 44px !important;
            display: flex !important;
            align-items: center !important;
            justify-content: center !important;
            position: relative !important;
            z-index: 9999 !important;
            cursor: pointer !important;
        }

        /* --- 4. Spațiere și layout fluid pentru bară --- */
        .lia-lightbox-actions {
            display: flex !important;
            flex-wrap: wrap !important;
            justify-content: flex-end !important;
            min-width: 120px !important;
        }
        .lia-lightbox-info {
            display: flex !important;
            flex-wrap: wrap !important;
            height: auto !important;
            align-items: center !important;
        }
        .lia-lightbox-context {
            flex: 1 !important;
            min-width: 150px !important;
        }
    `;
    document.head.appendChild(customStyle);

    // --- 2. LOGICA DE INJECTARE A BUTONULUI NOU ---
    function injectViewButton() {
        // Căutăm bara de acțiuni și butonul nativ de download
        const actionsContainer = document.querySelector('.lia-lightbox-actions');
        const downloadWrapper = document.querySelector('li\\:media-download-media, .lia-media-download-icon');

        // Dacă galeria e deschisă, dar butonul nostru încă nu există în ea
        if (actionsContainer && downloadWrapper && !document.querySelector('.custom-view-btn')) {

            // Creăm wrapper-ul butonului
            const btnWrapper = document.createElement('span');
            btnWrapper.className = 'custom-view-btn lia-button-wrapper lia-button-wrapper-primary';
            btnWrapper.style.cssText = 'display: inline-block !important; margin-right: 5px;';

            // Creăm link-ul propriu-zis
            const viewLink = document.createElement('a');
            viewLink.className = 'custom-view-btn-link lia-button lia-button-primary lia-button-inversed lia-button-icon';
            viewLink.title = 'Deschide imaginea originală într-un tab nou';

            // Adăugăm iconița de "External Link" (sau poți schimba în 'lia-fa-eye' pentru un ochi)
            const icon = document.createElement('i');
            icon.className = 'lia-fa lia-fa-external-link';

            viewLink.appendChild(icon);
            btnWrapper.appendChild(viewLink);

            // LOGICA LA CLICK: Când dăm click, citim pe loc URL-ul butonului de download
            viewLink.addEventListener('click', function(e) {
                e.preventDefault();
                e.stopPropagation(); // Oprim Angular să se amestece

                // Căutăm link-ul nativ de download ca să îi "furăm" adresa
                const currentDlLink = document.querySelector('a[download]');
                if (currentDlLink && currentDlLink.href) {
                    let originalHref = currentDlLink.href;

                    // 1. Curățăm URL-ul pentru imaginile standard (inserate)
                    let viewUrl = originalHref
                        .replace('/download/true', '')
                        .replace('/is-moderation-mode/true', '');

                    // 2. Aplicăm fix-ul pentru atașamente
                    if (viewUrl.includes('/attachments/')) {
                        // Verificăm dacă linkul are deja alți parametri (conține un '?')
                        if (viewUrl.includes('?')) {
                            viewUrl += '&inline=true';
                        } else {
                            viewUrl += '?inline=true';
                        }
                    }
                    window.open(viewUrl, '_blank'); // Deschidem tab nou
                }
            });

            // Îl inserăm imediat înaintea butonului de Download
            downloadWrapper.parentNode.insertBefore(btnWrapper, downloadWrapper);
        }
    }

    // --- 3. OBSERVER PENTRU ANGULAR ---
    // Angular distruge și recreează elemente la fiecare poză. Așa că punem un "paznic"
    // care rulează funcția noastră de fiecare dată când se schimbă ceva în DOM.
    const observer = new MutationObserver(() => {
        injectViewButton();
    });

    // Începem să supraveghem pagina
    observer.observe(document.body, { childList: true, subtree: true });

})();

Modificări aduse:

  • Am ascuns butoanele de report și like pentru imagini, fiind nefuncționale oricum (like-ul, cel puțin, apărea doar pentru imaginile proprii, unde oricum nu ai cum să-ți dai like).
  • Am adăugat un buton nou pentru "View" (deschide imaginea originală într-un tab nou).
  • Le-am dat mai multe șanse butoanelor să nu dispară pe mobil și să poată fi apăsate corect (nu mai sunt ascunse/blocate în spatele unui layer invizibil).

N-o să șterg totuși scriptul de la LE2 dacă sunt doritori care vor să nu folosească galeria de niciun fel.

Pentru întrebări, sugestii și reclamații, lăsați un comentariu.

17 Răspunsuri 17

Radutuby
#StarMember

Neața,  oare ce fac greșit? La mine nu merge

26623.jpg

26627.jpg

<> Where light can travel, communication knows no boundaries.<>

Radutuby
#StarMember

Am rezolvat,  Mulțumesc frumos 😍. Chiar este foarte util script-ul. Am greșit eu la copierea script-ului imi dadea ceva eroare de sintaxa. Acum se vede corect.

Bravo!

26635.jpg

<> Where light can travel, communication knows no boundaries.<>

Viper
Cunoscător certificat

Am editat postarea inițială, am urcat scriptul pe github sub formă de gist, să fie mai ușor de instalat pe telefon. Sau chiar și pe PC, văd că Violentmonkey vede automat că e vorba de un script pe care-l poate folosi și întreabă dacă vrei să-l instalezi/înlocuiești.

Mai lipsește un feature, poate îl rezolvi și pe ăsta. 😄 Pozele de pe comunitate nu se pot mări tot așa cu un script? De multe ori am făcut screenshot la poză ca să văd detaliile ulterior. Bine, ar fi de apreciat să existe funcția pinch to zoom nativ, dar na, poate cer eu prea multe.😅

<> Where light can travel, communication knows no boundaries.<>

Viper
Cunoscător certificat

Imaginile din forum se deschid într-un fel de galerie. Teoretic fiecare imagine are un buton de descărcare (după ce dai click pe imagine apare în dreapta jos) dar pe telefoane nu apare din cauza rezoluției sau un bug ceva, apare doar butonul mai din stângă, de raportare.

Exemplu, pe PC: comunitate - post image PC.PNG

Și pe mobil:

comunitate - post image Mobile.jpeg

Caut o soluție. Bănuiesc că vrei să rezolvăm problema de pe telefon, nu?

Da, ar fi frumos. Bine ar fi să se poată. Mulțumesc.🙂

<> Where light can travel, communication knows no boundaries.<>

Viper
Cunoscător certificat

Vezi scriptul de aici: orange_fix_forum_images.user.js

Am dat skip complet la galerie. Nu aș combina scripturile în unul singur, poate doar să fac unul separat care le conține pe amândouă.

Marfă! 🤪. Exact ce aveam nevoie 😄.

Mulțumesc frumos! Super util!

26766.jpg

26768.jpg

26770.jpg

 

<> Where light can travel, communication knows no boundaries.<>

Viper
Cunoscător certificat

Cu scriptul oprit, am descoperit că dacă întorci telefonul în landscape apare acel buton de download, cred că pot repara și galeria ca alternativa la eliminarea ei completă. Are rost să mă chinui?

Pentru mine e perfect scriptul tău, dar dacă ai timp și chef poți să încerci. Eu oricum apreciez la maximum schema cu scripturile astea două.😊

<> Where light can travel, communication knows no boundaries.<>

Viper
Cunoscător certificat

M-am uitat puțin prin codul galeriei, e cam stufos. Poate-l repară Orange 😁

Viper
Cunoscător certificat

Poți testa varianta asta? (dai disable la Forum Images Fix)

orange_fix_forum_gallery.user.js

Am ascuns butoanele de Report și Kudos (Like) fiind nefuncționale oricum în galerie, cel de apreciere apărea culmea la imaginile din propriile postări unde era anulat oricum 🙄

Am mărit puțin zona de click și scos mai la "suprafață" acea bară de jos care apare cănd dai click pe imagini, de foarte multe ori nu puteai să apeși butonul chiar dacă era vizibil (pe mobil cel puțin)... `powered by Khoros`.

Merge, dar mie imi place mai mult varianta cu pinch to zoom

26940.jpg

<> Where light can travel, communication knows no boundaries.<>

Viper
Cunoscător certificat

Am actualizat scriptul, descarcă-l din nou 😄 vezi acum 🙂