2016-08-29 12 views
7

W Silverstripe, jeśli klikniesz prawym przyciskiem myszy na stronie w Sitetree, masz możliwość duplikowania jednej strony lub strony i wszystkich jej dzieci.Usuń funkcję "Duplikuj tę stronę i podstrony" w Silverstripe

enter image description here

Odkryliśmy, że użytkownicy czasami powielać stron z dużą liczbą dzieci, a chcieliby, aby temu zapobiec albo przez usunięcie opcji "tej strony i podstron lub ograniczając je jedynie administratorami.

Jak można to osiągnąć?

Odpowiedz

0

Dodanie następującego kodu do strony.php zapobiega duplikowaniu stron i podstron przez użytkowników niebędących administratorami. Pozycja menu jest nadal widoczna, co jest nieoptymalne, ale jest wystarczająco dobre, jako szybkie rozwiązanie.

public function duplicateWithChildren() { 
    if(!Permission::check('ADMIN')) { 
     throw new ValidationException("You must be logged in as an Admin to duplicate a page and subpages"); 
    } 
    return parent::duplicateWithChildren(); 
} 
3

Patrząc na code in cms/javascript/CMSMain.Tree.js w SilverStripe 3.4 nie wygląda na to, że obecnie można to wyłączyć.

Jedną z opcji mamy jest dodać trochę CSS CMS, aby ukryć menu dla każdego:

mysite/CSS/cms.css

#vakata-contextmenu a[rel="duplicate"] + ul > li:last-child { 
    display: none; 
} 

Aby włączyć plik cms.css my dodaj następującą linię do naszego config.yml

mojawitryna/_config/config.yml

LeftAndMain: 
    extra_requirements_css: 
    - 'mysite/css/cms.css' 
+0

See SiteTree :: canAddChildren() w celu ograniczenia tworzenia stron podrzędnych –

+1

nadal chcemy, aby móc dodać dzieci stron. Chcemy tylko usunąć opcję _duplicate page i supages_. Użycie 'SiteTree :: canAddChildren()' uniemożliwi pełne tworzenie stron podrzędnych. – 3dgoo

+1

Masz rację ... to jest nieco bardziej skomplikowane. spróbuj rzucić wyjątek w stronę :: onBeforeDuplicate(), aby ograniczyć dostęp lub przeładować SiteTree :: duplicateWithChildren(). Zgadzam się, musimy ułatwić sobie w SS4 –

Powiązane problemy