How to hide Admin Menu (backend) in Joomla 3? - joomla

How to hide 'System > Control Panel', 'Components', 'Help' these 3 menu items in joomla3? Sorry not enough reputation to post image. =.= Certain user groups do not need to access/view these. I have hide the rest such as 'Users', 'Menus', 'Contents', 'Extensions' but can't hide these.

Removing help item could easily done from:
Extensions -> Module Manager -> Administrator -> Admin Menu -> Advanced -> Help Menu: Hide
For the rest of the menu items you have to make an override to the admin menu module.
You have to download:
/administrator/modules/mod_menu/tmpl/default_enabled.php
And copy to:
/administrator/templates/*your_admin_template/html/mod_menu/default_enabled.php
You have to check if active user is not to the level that you don't want to show the menu item (id: 18) in our example. So for control panel item you have to change:
$menu->addChild(new JMenuNode(JText::_('MOD_MENU_CONTROL_PANEL'), 'index.php', 'class:cpanel'));
To:
if(!in_array(18, $user->groups)){
$menu->addChild(new JMenuNode(JText::_('MOD_MENU_CONTROL_PANEL'), 'index.php', 'class:cpanel'));
}
And for components menu you have to find:
if ($components)
And change to:
if ($components && !in_array(18, $user->groups))
Good Luck!

Log into your back-end using a username that has Super Administrator privileges
Set to new user - Publisher group (or any other except Administrator/Supper Administrator )Edit access rights in System -> Global Configuration -> PermissionsSet:Site LoginAllowedAdmin LoginAllowedOffline AccessDeniedSuper UserDeniedAccess Administration InterfaceDenied...
help menu:Go to the Module ManagerChoose Administrator from the dropdown (Site/Administrator)Choose the module "Admin Menu" and EditIn Advanced menu choose "Help Menu" value -> Hide

You can use the built in override creation:
goto Template Manager
Click on Templates
Click on Template name. In my case "Isis"
Click on Create Overrides
Click on "mod_menu"
Now those files will be available via FTP here: public_html/administrator/templates/isis/html/mod_menu

Open the file administrator/modules/mod_menu/tmpl/default_enabled.php from whichever template you are using for administrative area (for instance, mine is IsIs).
Find the following block of code
/*
* Help Submenu
*/
if ($showhelp == 1)
{
And change the if condition ($showhelp == 1) to $showhelp == 0 and the help menu disappears.

Related

Switching manually between tabs in personal msteams application

I have two tabs in my personal msteams application and I would like to navigate between them dynamically. Is it possible? I've tried to use microsoftTeams.getTabInstances method from msteams SDK to get my tabs and after that navigate to the chosen tab by invoking microsoftTeams.navigateToTab but this approach doesn't work - I get null from microsoftTeams.getTabInstances. My user is logged in (I've read somewhere that user must be logged in).
I've not tried exactly this action, but I believe you should be able to do what you're trying using Deep Links. In particular, see the Deep linking from your tab where it talks about
This is useful if your tab needs to link to [...] another tab [...]
and the syntax is
microsoftTeams.executeDeepLink(/*deepLink*/);
Just a reminder that in deep link syntax, e.g. https://teams.microsoft.com/l/entity/<appId>/<entityId>, the appid is your Teams app id, and the "entityId" must match the "entityId" for your tab in your Teams manifest file.
You can deeplink to content in Teams from your tab. This is useful if your tab needs to link to other content in Teams such as to a channel, message, another tab or even to open a scheduling dialog. To trigger a deeplink from your tab you should call:
var encodedWebUrl = encodeURI('https://tasklist.example.com/123/456&label=Task 456');
var encodedContext = encodeURI('{"subEntityId": "task456"}');
var taskItemUrl = 'https://teams.microsoft.com/l/entity/fe4a8eba-2a31-4737-8e33-e5fae6fee194/tasklist123?webUrl=' + encodedWebUrl + '&context=' + encodedContext;
Please take a look Deep Link to your tab

Read and Write access for FinderSync extension in a sandboxed environment

The scenario
The user right-clicks a directory in Finder and finds a custom MenuItem. Clicking that Item will tell my app to open up a window where the user can do his work. When he is finished files need to be written to to the folder he selected by right-clicking.
The Problem
I got everything to work now, but the very last part. The extension can't write to the selected folder.
The user selecting the folder he wants to interact with seems to not be part of the Powerbox which - how I understand it - is only activated with openPanel and savePanel. How do I get the rights to interact with the folder that the user selected through my menu item? I can't find a reference to any possible solution to that problem in the developer library. Not in the sandboxing guide not in the extensions guide.
The possibility to add custom menu items would be rather useless if there was no way to use the selected files and folders so I'm sure there must be a way for accessing them.
Maybe the way I'm trying to write is wrong. My main app writes a temporary file into a shared group folder. After that it sends a notification that the extension listens to:
func copyFile(notification:NSNotification)
{
NSLog("write file")
if let target = tmpTarget
{
let secureContainer = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.de.enie.Nu")
let contents = NSFileManager.defaultManager().contentsOfDirectoryAtURL(secureContainer!, includingPropertiesForKeys: nil, options: NSDirectoryEnumerationOptions.SkipsHiddenFiles | NSDirectoryEnumerationOptions.SkipsPackageDescendants | NSDirectoryEnumerationOptions.SkipsSubdirectoryDescendants , error: nil)
for content in contents as! [NSURL]
{
NSLog("tmp data: \(content.path!)")
if content.lastPathComponent!.stringByDeletingPathExtension == "SharedData"
{
NSLog("found shared file")
NSFileManager.defaultManager().copyItemAtURL(content, toURL: target.URLByAppendingPathComponent(content.lastPathComponent!), error: nil)
NSFileManager.defaultManager().removeItemAtURL(content, error: nil)
}
}
tmpTarget = nil
}
}
The attempt to write the file results in these console notifications:
open on /Users//Desktop/SharedData.png: Operation not permitted
deny file-write-create /Users//Desktop/SharedData.png
Any ideas how to get access to user selected folders are appreciated.
Update
I just reassured that I did no mistakes in any way. While I'm allowed to access folders via the NSOpenPanel (which means entitlements should be right) I can not create folders in / or even bookmark the target url of my default FIFinderSyncController.
Even though the Finder Sync App Extension is granted "User Selected File" Sandbox File Access, the selectedItemURLs() files accessed by the user via Finder Sync App Extension right-click seemingly do not count as being "user-selected". The sandbox thus denies your Finder Sync app access to those files.
As the other answer notes, the only way around this is to use a temporary entitlement for wider file access. Or to use a Powerbox NSOpenPanel to have the user select a containing folder, and use that security-scoped bookmark to access the sandboxed files.
Please duplicate my Apple bug report requesting this behavior be allowed:
Finder Sync App Extension selectedItemURLs() should receive "User Selected File" Sandbox file access.
rdar://42874694
https://openradar.appspot.com/radar?id=5063363058991104
You should be able to write to the selected file if you grant the entitlement: com.apple.security.files.user-selected.read-write

Lightswitch Forms Authentication logout button on multiple pages?

Lightswitch provides a Logout button on the Home page by default, but I'd like to have the option to log out on other pages as well. Is it possible to place the logout button on multiple pages?
If you're working with the HTML client, this can easily be achieved by replacing the following line of code in the LightSwitch library's _determineButtons function: -
result.showLogOut = msls_shell.getHomeScreen() === navigationUnit.screen.details.getModel();
With the following line of code: -
result.showLogOut = true;
This function is located in Scripts\msls-?.?.?.js file and, in order for this type of library file change to be applied, you'll need to reference the un-minified version of the LightSwitch library by making the following change in your HTML client's default.htm file: -
<!--<script type="text/javascript" src="Scripts/msls-?.?.?.min.js"></script>-->
<script type="text/javascript" src="Scripts/msls-?.?.?.js"></script>
The question marks in the msls reference will need to mirror the version you're using e.g. msls-2.5.2.js (for Visual Studio 2013 Update 4).
The above approach will force the LogOut button to appear on every page. However, if you need more control over when the LogOut button appears, you could use the following alternative change in the _determineButtons function: -
result.showLogOut = window.msls.showLogOut;
Then, in the created method of each screen, set the msls.showLogOut property to true when you wish the button to appear and to false when you don't e.g.: -
myapp.BrowseContacts.created = function (screen) {
// Write code here.
msls.showLogOut = true;
};
You don't say what version or language. This is VB for VS2012, Lightswitch web application.
Add a button to the Screen Command Bar, call it Logout (you can choose an image for it in the Properties panel later if you want). Right click the button and select Edit Execute Code. Use the following:
Private Sub Logout_Execute()
Microsoft.LightSwitch.Threading.Dispatchers.Main.BeginInvoke(
Sub()
System.Windows.Browser.HtmlPage.Window.Navigate(New Uri("../LogOut.aspx", UriKind.Relative))
End Sub)
End Sub
Works for me.
Phil

Magento : How to hide the default Store View code from the url

The site has 2 languages: English and French, represented by 2 store views. French is the default one. For our SEO efforts we need to have the following urls:
French - http://www.domain.com/category/product
English - http://www.domain.com/en/category/product
System -> Configuration -> Web -> Add Store Codes to URL is the all or nothing setting. We just need to turn it off for the default store only.
I’ve done a lot of searching through the forums and wiki but there’s nothing on the subject.
Please any sugestions?
Finnaly i solved this magic probleme , i hope that's save others persone here is the details :
1- Download the zip existe in this page : https://github.com/Knectar/Magento-Store-Codes
2- unzip the file and put the folder called "Knectar" in {app/code/community/} and Knectar_Storecodes.xml file in {app/etc/modules}
3- In your backoffice go to "System > Tools > Compilation" and click the rebuild button
4- always in backoffice got to "System > Configuration > Web > URL options" and set the attribute "and default store view" to No and save the configuration
5- Clear your cach magento and enjoy your application :) .
I had the same problem and I have developed an extension for that.
It is available on GitHub: https://github.com/jreinke/magento-hide-default-store-code
I didn't find a quick solution to your problem, but I see that's possible through 2 steps :
1 / Using the advise commented by #user3154108 and trying this tip https://magento.stackexchange.com/questions/8126/store-code-in-url-for-every-store-view-except-for-default
2 / For SEO SITEMAP, it's possible to override the following file
app/code/core/Mage/Sitemap/Model/Sitemap.php
public function generateXml()
{
...
}
and replace the default store code by NULL.
For more details try to look at this post : http://alanstorm.com/generating_google_sitemaps_in_magento
I was having the same problem and I had already selected to not show store code in url in the config. I also didn't want to install an extension just to handle something this minor. Here's my EASY solution:
Copy app/code/core/Mage/Catalog/Block/Widget/Link.php to app/code/local/Mage/Catalog/Block/Widget/Link.php
Search for (line 91 in Magento 1.7.x / line 100 in Magento 1.9.x)
$this->_href = $this->_href . $symbol . "___store=" . $store->getCode();
And modify to
$this->_href = $this->_href;
Upload and save your changes and you'll now not have your widget (dynamically) inserted links getting appended with ?___store=default.
Credit: DesignHaven
Under System -> Configuration -> Web -> URL Options you
change "Add Store Code to Urls" to "NO" as on the attached screenshot

Reset Password Link Joomla - While in "maintenance mode" / offline mode

How do users reset passwords while in "off-line" mode.
We are running the site as Intranet.
Joomla 2.5.4
Mhm.. this is quite long to do, but maybe you can work it out.
Grant your user level offline access (you can do that in Global configuration -> Permissions)
Create a menu entry that point to the user profile and set visible to your users
Set every menu/modules etc etc invisible to "normal" users (except the previous one)
I've never tried it before, but it should work.
I just wanted to share my solution for Joomla 3.9:
In the file "offline.php" of your template (or in /templates/system if the template has no offline.php) you can place this code before where the login form is displayed:
if( JRequest::getVar('option') == 'com_users') {
?><jdoc:include type="message"/><?php
$registrationController = new UsersController();
$registrationController->display();
} else {
// Login Form
}
so it displays the dialogs to reset the password if the page is loaded by using "index.php?option=com_users&task=request.reset" or similar, but shows the "offline" login form by default.

Resources