How to change order of sub-nav in buddypress - buddypress

i want to ask that how to change order of sub-nav in buddy press is there any plugin exists?
i have used bp-group-hierarchy plugin when ever i add new tab after group hierarchy all the tabs after it disappears.
any help would be appreciated.

Go to your loader page and change the position. You can change the numbers to move it either up or down. The lower the number, the higher up it will be. Hope this helps:
$sub_nav[] = array(
'name' => __( 'Screen One', 'bp-section' ),
'slug' => 'screen-one',
'parent_url' => $section_link,
'parent_slug' => bp_get_section_slug(),
'screen_function' => 'bp_section_screen_one',
'position' => 10
);

Related

Yii how to highlight the current label

$this->breadcrumbs=array(
'Dailymarket Reports',
);
$this->menu=array(
array('label'=>'inbox', 'url'=>array('index')),
array('label'=>'sent', 'url'=>array('sent')),
);
Above I have two labels. I want inbox to be default active label if mouse moves out and selects sent as active it should be highlighted.
I think you are asking about how to show the menu item selected according to the current route if you are on Home page then the Home menu item should be selected.
Although you can see solutions like adding checks but if you provide full path to your link you won't have to add any further checks for activating the menu items, just make sure you are not passing activateItems=>false inside the CMenu widget in the layout file, otherwise it defaults to true and it decides whether to automatically activate items according to whether their route setting matches the currently requested route.
Go to your view where you are adding the menu specify a full path like /controller/action for your links for example if I have a menu for the site controller SiteController actions I will provide paths like below.
$this->menu=array(
array('label'=>'Home', 'url'=>array('/site/index')),
array('label'=>'Demo', 'url'=>array('/site/demo')),
);
and that's it you can make it work if you don't need to add separate checks for every menu item.
Just make sure you have a css class for li.active > a so that you can get the highlighted effect,
If you want to add active class for specified items:
$this->menu = array(
array(
'label' => 'inbox', 'url' => array('index'),
'active' => $this->action->id === 'index' ? true : null,
),
array(
'label' => 'sent', 'url' => array('sent'),
'active' => $this->action->id === 'sent' ? true : null,
),
);
You need to style items with active class yourself.
You may also omit specifying url for current item, so it will be displayed as text instead of link:
$this->menu = array(
array(
'label' => 'inbox',
'url' => $this->action->id === 'index' ? null : array('index'),
),
array(
'label' => 'sent',
'url' => $this->action->id === 'sent' ? null : array('sent'),
),
);

Creating Prestashop back-office module with settings page

I'm creating a back-office module for Prestashop and have figured out everything except the best way to display the admin page. Currently I'm using the renderView() method to display the content of view.tpl.
I would like to display a table with values and an option to add a new row. Should I just create it in the view.tpl or is there a better way? I've seen the renderForm() method but haven't figured out how it works yet.
The biggest question I have is, how do I submit content back to my controller into a specific method?
ModuleAdminController is meant for managing some kind of records, which are ObjectModels. Defauly page for this controller is a list, then you can edit each record individually or view it's full data (view).
If you want to have a settings page, the best way is to create a getContent() function for your module. Besides that HelperOptions is better than HelperForm for this module configuration page because it automatically laods values. Define the form in this function and above it add one if (Tools::isSubmit('submit'.$this->name)) - Submit button name, then save your values into configuration table. Configuration::set(...).
Of course it is possible to create some sort of settings page in AdminController, but its not meant for that. If you really want to: got to HookCore.php and find exec method. Then add error_log($hook_name) and you will all hooks that are executed when you open/save/close a page/form. Maybe you'll find your hook this way. Bettter way would be to inspect the parent class AdminControllerCore or even ControllerCore. They often have specific function ready to be overriden, where you should save your stuff. They are already a part of execution process, but empty.
Edit: You should take a look at other AdminController classes, they are wuite simple; You only need to define some properties in order for it to work:
public function __construct()
{
// Define associated model
$this->table = 'eqa_category';
$this->className = 'EQACategory';
// Add some record actions
$this->addRowAction('edit');
$this->addRowAction('delete');
// define list columns
$this->fields_list = array(
'id_eqa_category' => array(
'title' => $this->l('ID'),
'align' => 'center',
),
'title' => array(
'title' => $this->l('Title'),
),
);
// Define fields for edit form
$this->fields_form = array(
'input' => array(
array(
'name' => 'title',
'type' => 'text',
'label' => $this->l('Title'),
'desc' => $this->l('Category title.'),
'required' => true,
'lang' => true
),
'submit' => array(
'title' => $this->l('Save'),
)
);
// Call parent constructor
parent::__construct();
}
Other people like to move list and form definitions to actual functions which render them:
public function renderForm()
{
$this->fields_form = array(...);
return parent::renderForm();
}
You don't actually need to do anything else, the controller matches fields to your models, loads them, saves them etc.
Again, the best way to learn about these controller is to look at other AdminControllers.

Yii widgets.TbThumbnails Pagination

I am using this 'widgets.TbThumbnails' from bootstrap to show the list of items as thumbnails. It shows first 10 items in one page and another 10 items on the other page. further it shows page navigator button at the bottom of the page. I tried to show all the items in a single page, but couldn't. If anyone know please help me to fix this. here is my code for thumbnail view
<?php $dataProvider = new CActiveDataProvider('Symptoms');
$this->widget('ext.bootstrap.widgets.TbThumbnails',
array(
'dataProvider' => $dataProvider,
//'template' => "{items}\n{pager}",
'itemView' => '_thumb',
//'htmlOptions' => array('style' => 'width:975px;','height:1020px'),
)
);
?>
Well that is due to the fact that dataProvider uses default settings for pagination.
Cpagination has a property named pageSize which refers to the the number of items per page. By default this is set to 10 thats why you can see 10 items per page.
Here is Official documentation.
You can do like this:
<?php
$dataProvider = new CActiveDataProvider('Symptoms', array(
'pagination'=>false
));
$this->widget('ext.bootstrap.widgets.TbThumbnails', array(
'dataProvider' => $dataProvider,
'itemView' => '_thumb',
)
);
?>

Yii: CGridView - open a link in new window

I have big problems in generating a button in CGridView that opens a page in a new browser window. This is the code, I use:
'preview' => array(
'value' => 'CHtml::link("test", array("classified/preview", "id"=>$data->id), array("target"=>"_blank"))',
'header' => 'Name',
'name' => 'name',
'type' => 'raw',
),
The generated link looks like this:
http://localhost/fotomarkt/index.php?r=classified/listmine#
So the link is wrong and the "target=_blank" is ignored.
I also saw this with bool.dev's good answer, but somehow, it doesn't work for me...
I guess, it's something stupid, which I simply don't see...
The code above is fine for a CGridColumn. However, it looks like you are using a CButtonColumn. The code below should suffice.
'preview' => array(
'url' => 'array("classified/preview", "id"=>$data->id)',
'label'=>'test',
'options'=>array("target"=>"_blank"),
),
Also if you require a column in which each cell contains a single link only, a CLinkColumn would be more suited than a CGridColumn.

Yii multiple update of child records based on current parent record

I am trying to come up with a way of updating multiple records of a model and as I am using YiiBooster I have seen that you can do bulk actions using the Extended Grid.
Most of the examples that I have found on the web are showing how to delete multiple records using Ajax but my requirements are slightly different. As a newbie to Yii I am struggling to work out a suitable solution to this.
Basically I have 2 models, a parent and a child with a one-to-many relation. In the child model I have a field which references which parent it belongs to using the parent ID.
In the front end of the application the user is supposed to navigate to the parent update view and then see a list of all children assigned to that parent. I have created a modal window that shows a grid list of all children with the ability to perform a bulk update action. This will then assign the parent ID to all of the children that were selected.
Can anyone help me out with this as I am unsure what I need to edit in the extended grid view and controller that will be used to update the records?
In my parent update view I pull in the index view of the children using renderPartial, as follows:
<?php $this->renderPartial('application.modules.children.views.childviews.addChild', array('dataProvider' => new CActiveDataProvider('Children'))); ?>
I then have an Extended grid in my child index view:
<?php
$this->widget('bootstrap.widgets.TbExtendedGridView', array(
'type' => 'striped bordered',
'id' => 'children-grid',
'dataProvider' => $dataProvider,
'bulkActions' => array(
'actionButtons' => array(
array(
'buttonType' => 'link',
'type' => 'primary',
'size' => 'small',
'label' => 'Bulk Action',
'url' => array('batchUpdate'),
'htmlOptions' => array(
'class' => 'bulk-action'
),
'id' => 'child_id',
'click' => ''
)
),
'checkBoxColumnConfig' => array(
'name' => 'child_id'
),
),
'columns' => array(
'child_id',
'child_status',
'parent_id',
array(
'class' => 'bootstrap.widgets.TbButtonColumn',
'buttons' => array(
'update' => array(
'label' => '<i class="icon-user"></i> <span>View Child</span>',
'options' => array('class' => 'btn btn-small'),
'url' => 'Yii::app()->createUrl("children/update", array("id"=>$data->child_id))',
),
),
),
),
));
?>
I am guessing that I need some kind of onclick event that calls an update action in the controller and this action updates the parent_id column of all selected records to the parent id of the current parent update page?
I hope someone can help and many thanks in advance.
Instead of a one to many relationship as you stated in your question, it seams that you really want a many to many relationship. The reason I say that is you seem to want to select from a set of pre-defined properties for your auction. In that case you would display the parent (auction), and the list of perspective children (properties), and using a checkbox or something like that to indicate the selection of the perspective children. You will have to use a separate data model to record the selections. I don't have an example right now, but I will need to do something like this in my current Yii project, and I will blog about it when I get there.