PDA

Zobacz pełną wersję : Autor bez możliwości ustawienia artykułu na stronie głównej



masterkkk
22-06-2010, 21:06
Każdy użytkownik o uprawnieniach "autor" ma możliwość edycji swoich artykułów. Niestety może też ustawić treść na stronie głównej (Na Startowej: Nie Tak) co w moim przypadku jest niepożądane.

W jaki sposób można wyłączyć tą opcję?
lub
Czy jest możliwe ustawienie aby przy takie edycji była konieczność akceptacji przez administratora?

Nie znalazłem odpowiedzi na forum stąd prośba o pomoc.

Jola
22-06-2010, 23:18
Witam,
ja tą opcje po prostu ukrywam przed autorem.
Plik components/com_content/views/article/tmpl/form.php (lub jeśli jest twoj_szablon/html/com_content/views/article/form.php gdzieś u góry dodać:

$styl = '';
if($this->user->get('gid') == 19){ //dla autora niewidoczne
$styl = 'style="height:0px; visibility: hidden;"';
}potem odszukać ten fragment kodu:

<tr>
<td width="120" class="key">
<label for="frontpage">
<?php echo JText::_( 'Show on Front Page' ); ?>:
</label>
</td>
<td>
<?php echo $this->lists['frontpage']; ?>
</td>
</tr> i dopisać:

<tr <?php echo $styl; ?>>
<td width="120" class="key">
<label for="frontpage">
<?php echo JText::_( 'Show on Front Page' ); ?>:
</label>
</td>
<td>
<?php echo $this->lists['frontpage']; ?>
</td>
</tr>Zmodyfikowany plik zapisać korzystając z nadpisywania szablonem. :)

masterkkk
23-06-2010, 07:48
Świetne rozwiązanie :)
Pięknie dziękuję

Max00
25-07-2010, 18:38
Witam!
Nie wiem czemu, ale powyższy sposób u mnie nie działa, a zamiast podanego kodu mam taki:

<div>
<label class="label-left" for="frontpage">
<?php echo JText::_( 'Show on Front Page' ); ?>:
</label>
<?php echo $this->lists['frontpage']; ?>
</div>
Dopisałem komendę u góry jak pani, a następnie próbowałem gdzieś wcisnąć "<?php echo $styl; ?>", lecz mi się nie udało...
Przepraszam za moją niewiedzę i z góry dziękuję za odpowiedź!

Jola
25-07-2010, 19:54
Witam,
w swoim szablonie nie masz użytej tabeli tylko div. :)
W miejsce <div> wstaw:

<div <?php echo $styl; ?> >

Max00
25-07-2010, 23:04
Hmm... Teraz działa to, ale zepsuł się wybór kategorii :/ Tzn na liście wyświetla sekcje, ale po wybraniu jakiejkolwiek, nie ukazują się kategorię. Po usunięciu zmian, wszystko wraca do normy. Myślę, że dzieje się tak dlatego, że komendę:

$styl = '';
if($this->user->get('gid') == 19){ //dla autora niewidoczne
$styl = 'style="height:0px; visibility: hidden;"';
}
Umieszczam w złym miejscu.
Pozdrawiam!

Jola
25-07-2010, 23:18
Bez kodu Twojego szablonu nie jestem w stanie nic powiedzieć.

Max00
26-07-2010, 00:01
components/com_content/views/article/tmpl/form.php


<?php // no direct access
defined('_JEXEC') or die('Restricted access');

$config =& JFactory::getConfig();
$publish_up =& JFactory::getDate($this->article->publish_up);
$publish_up->setOffset($config->getValue('config.offset'));
$publish_up = $publish_up->toFormat();

if (! isset($this->article->publish_down) || $this->article->publish_down == 'Never') {
$publish_down = JText::_('Never');
} else {
$publish_down =& JFactory::getDate($this->article->publish_down);
$publish_down->setOffset($config->getValue('config.offset'));
$publish_down = $publish_down->toFormat();
}
?>

<script language="javascript" type="text/javascript">
<!--
function setgood() {
// TODO: Put setGood back
return true;
}

var sectioncategories = new Array;
<?php
$i = 0;
foreach ($this->lists['sectioncategories'] as $k=>$items) {
foreach ($items as $v) {
echo "sectioncategories[".$i++."] = new Array( '$k','".addslashes( $v->id )."','".addslashes( $v->title )."' );\n\t\t";
}
}
?>


function submitbutton(pressbutton) {
var form = document.adminForm;
if (pressbutton == 'cancel') {
submitform( pressbutton );
return;
}
try {
form.onsubmit();
} catch(e) {
alert(e);
}

// do field validation
var text = <?php echo $this->editor->getContent( 'text' ); ?>
if (form.title.value == '') {
return alert ( "<?php echo JText::_( 'Article must have a title', true ); ?>" );
} else if (text == '') {
return alert ( "<?php echo JText::_( 'Article must have some text', true ); ?>");
} else if (parseInt('<?php echo $this->article->sectionid;?>')) {
// for articles
if (form.catid && getSelectedValue('adminForm','catid') < 1) {
return alert ( "<?php echo JText::_( 'Please select a category', true ); ?>" );
}
}
<?php echo $this->editor->save( 'text' ); ?>
submitform(pressbutton);
}
//-->
</script>
<?php if ($this->params->get('show_page_title', 1)) : ?>
<div class="componentheading<?php echo $this->escape($this->params->get('pageclass_sfx')); ?>"><?php echo $this->escape($this->params->get('page_title')); ?></div>
<?php endif; ?>
<form action="<?php echo $this->action ?>" method="post" name="adminForm" onSubmit="setgood();">
<fieldset>
<legend><?php echo JText::_('Editor'); ?></legend>
<table class="adminform" width="100%">
<tr>
<td>
<div style="float: left;">
<label for="title">
<?php echo JText::_( 'Title' ); ?>:
</label>
<input class="inputbox" type="text" id="title" name="title" size="50" maxlength="100" value="<?php echo $this->escape($this->article->title); ?>" />
<input class="inputbox" type="hidden" id="alias" name="alias" value="<?php echo $this->escape($this->article->alias); ?>" />
</div>
<div style="float: right;">
<button type="button" onclick="submitbutton('save')">
<?php echo JText::_('Save') ?>
</button>
<button type="button" onclick="submitbutton('cancel')">
<?php echo JText::_('Cancel') ?>
</button>
</div>
</td>
</tr>
</table>

<?php
echo $this->editor->display('text', $this->article->text, '100%', '400', '70', '15');
?>
</fieldset>
<fieldset>
<legend><?php echo JText::_('Publishing'); ?></legend>
<table class="adminform">
<tr>
<td class="key">
<label for="sectionid">
<?php echo JText::_( 'Section' ); ?>:
</label>
</td>
<td>
<?php echo $this->lists['sectionid']; ?>
</td>
</tr>
<tr>
<td class="key">
<label for="catid">
<?php echo JText::_( 'Category' ); ?>:
</label>
</td>
<td>
<?php echo $this->lists['catid']; ?>
</td>
</tr>
<?php if ($this->user->authorize('com_content', 'publish', 'content', 'all')) : ?>
<tr>
<td class="key">
<label for="state">
<?php echo JText::_( 'Published' ); ?>:
</label>
</td>
<td>
<?php echo $this->lists['state']; ?>
</td>
</tr>
<?php endif; ?>
<tr>
<td width="120" class="key">
<label for="frontpage">
<?php echo JText::_( 'Show on Front Page' ); ?>:
</label>
</td>
<td>
<?php echo $this->lists['frontpage']; ?>
</td>
</tr>
<tr>
<td class="key">
<label for="created_by_alias">
<?php echo JText::_( 'Author Alias' ); ?>:
</label>
</td>
<td>
<input type="text" id="created_by_alias" name="created_by_alias" size="50" maxlength="100" value="<?php echo $this->escape($this->article->created_by_alias); ?>" class="inputbox" />
</td>
</tr>
<tr>
<td class="key">
<label for="publish_up">
<?php echo JText::_( 'Start Publishing' ); ?>:
</label>
</td>
<td>
<?php echo JHTML::_('calendar', $publish_up, 'publish_up', 'publish_up', '%Y-%m-%d %H:%M:%S', array('class'=>'inputbox', 'size'=>'25', 'maxlength'=>'19')); ?>
</td>
</tr>
<tr>
<td class="key">
<label for="publish_down">
<?php echo JText::_( 'Finish Publishing' ); ?>:
</label>
</td>
<td>
<?php echo JHTML::_('calendar', $publish_down, 'publish_down', 'publish_down', '%Y-%m-%d %H:%M:%S', array('class'=>'inputbox', 'size'=>'25', 'maxlength'=>'19')); ?>
</td>
</tr>
<tr>
<td valign="top" class="key">
<label for="access">
<?php echo JText::_( 'Access Level' ); ?>:
</label>
</td>
<td>
<?php echo $this->lists['access']; ?>
</td>
</tr>
<tr>
<td class="key">
<label for="ordering">
<?php echo JText::_( 'Ordering' ); ?>:
</label>
</td>
<td>
<?php echo $this->lists['ordering']; ?>
</td>
</tr>
</table>
</fieldset>

<fieldset>
<legend><?php echo JText::_('Metadata'); ?></legend>
<table class="adminform">
<tr>
<td valign="top" class="key">
<label for="metadesc">
<?php echo JText::_( 'Description' ); ?>:
</label>
</td>
<td>
<textarea rows="5" cols="50" style="width:500px; height:120px" class="inputbox" id="metadesc" name="metadesc"><?php echo str_replace('&','&amp;',$this->article->metadesc); ?></textarea>
</td>
</tr>
<tr>
<td valign="top" class="key">
<label for="metakey">
<?php echo JText::_( 'Keywords' ); ?>:
</label>
</td>
<td>
<textarea rows="5" cols="50" style="width:500px; height:50px" class="inputbox" id="metakey" name="metakey"><?php echo str_replace('&','&amp;',$this->article->metakey); ?></textarea>
</td>
</tr>
</table>
</fieldset>

<input type="hidden" name="option" value="com_content" />
<input type="hidden" name="id" value="<?php echo $this->article->id; ?>" />
<input type="hidden" name="version" value="<?php echo $this->article->version; ?>" />
<input type="hidden" name="created_by" value="<?php echo $this->article->created_by; ?>" />
<input type="hidden" name="referer" value="<?php echo str_replace(array('"', '<', '>', "'"), '', @$_SERVER['HTTP_REFERER']); ?>" />
<?php echo JHTML::_( 'form.token' ); ?>
<input type="hidden" name="task" value="" />
</form>
<?php echo JHTML::_('behavior.keepalive'); ?>

Jola
26-07-2010, 00:09
Czy to jest szablon, którego używa Twoja Joomla?
Z katalogu html Twojego szablonu?

alex51
26-07-2010, 07:46
@Maxx00, w zacytowanym przez siebie pliku form.php wstaw w okolicach początku kod zaproponowany przez @Jolaass. Proponuję następujące miejsce (cytuję sam początek pliku form.php):


<?php // no direct access
defined('_JEXEC') or die('Restricted access');

$config =& JFactory::getConfig();
$publish_up =& JFactory::getDate($this->article->publish_up);
$publish_up->setOffset($config->getValue('config.offset'));
$publish_up = $publish_up->toFormat();

$styl = '';
if($this->user->get('gid') == 19){ //dla autora niewidoczne
$styl = 'style="height:0px; visibility: hidden;"';
}

if (! isset($this->article->publish_down) || $this->article->publish_down == 'Never') {
$publish_down = JText::_('Never');
} else {
$publish_down =& JFactory::getDate($this->article->publish_down);
$publish_down->setOffset($config->getValue('config.offset'));
$publish_down = $publish_down->toFormat();
}
?>
Zastosuj drugą wskazówkę @Jolaass dotyczącą zmiany kodu we wskazanym miejscu. W zasadzie należy tam jedynie zastąpić znak
<tr> wpisem
<tr <?php echo $styl; ?>>
Zapisz plik w jego pierwotnym miejscu, czyli wg ścieżki:

components/com_content/views/article/tmpl/form.phpJeśli Twój szablon posiada katalog html to użyj metody nadpisywania szablonem, wstawiając poprawiony plik form.php w katalogu z aktualnie używanym przez Ciebie szablonem:

twoj_szablon/html/com_content/article/form.phpW takiej sytuacji możesz nie zmieniać treści oryginalnej w pliku form.php, znajdującego się w jego pierwotnej lokalizacji: components/com_content/views/article/tmpl/form.php bo pierwszeństwo wykonania będzie mieć ten zmodyfikowany plik z katalogu html szablonu.

Max00
26-07-2010, 15:18
W moim szablonie szukałem, nie ma takiego folderu, co za tym idzie takiego pliku. Zrobię tak, jak radzi alex51.

proveve
26-07-2010, 16:03
Witam, jestem początkującym użytkownikiem systemu JOOMLA mam pytanie poniekąd związane z tym postem

---------- Post dodany o 16:03 ---------- Poprzedni post był o 16:00 ----------

czy mogą występować różnice w funkcjonalności szablonów np. płatnych?... chodzi o to czy takie szablony mogą być np. wyposażone w bardziej przyjazne lub rozbudowane panele czy funkcje w stosunku do darmowych???

zwiastun
26-07-2010, 16:14
Oczywiście.

Max00
27-07-2010, 12:33
OK, teraz wszystko działa. Wcześniej miałem jeszcze inne zabezpieczenie tych treści. Niestety oba te zabezpieczenia łatwo da się łatwo obejść. Wydaje mi się, że wystarczy poczekać aż jakiś użytkownik się połapie jak to zrobić.