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

Acum este ok, cum imi place.😊

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

Viper
Cunoscător certificat

Mulțumesc pentru confirmare. Am actualizat prima postare. 

Pare mai ok să păstrăm galeria funcțională.

Viper
Cunoscător certificat

Am actualizat scriptul orange_fix_forum_gallery.user.js și acum butonul nou adăugat pentru "View" funcționează și pentru atașamente, nu doar pentru imaginile inserate în postare.

Am mai modificat ceva la script: pe mobil, imaginea din atașamente se afișa peste numele fișierului, nu am reușit să repar complet treaba asta dar e ceva mai bine.