Categories
Programming

SharePoint Framework (SPFx) – Full Bleed WebPart Tutorial

I recently needed to delve into SharePoint development and custom WebParts. One of the problems I had was whitespace, I had a modern SharePoint page with a single webpart that I wanted to use all available space. This is possible with a page capable of a Full-width column (Only available in Communication Sites, see here for instructions https://blog.velingeorgiev.com/how-add-spfx-webpart-full-width-column). But I needed more, I needed something to fit into an existing site on a Modern Page utilising an existing Classic Team Site template.

I figured I could use a simple style override to make this work for me. The following solution works well for my situation, but please note that it is completely unsupported by Microsoft and needs to be thoroughly testing in your own environment before considering its use. I have only tested this with a single WebPart on a page in a Single Column Layout.

Once you have a basic WebPart template created (Microsoft has plenty of documentation on how to do this), add jquery as a project dependency.

npm install jquery @types/jquery

Add an include in your .ts or .tsx file

import * as jQuery from "jquery";

Simply add the following lines in the WebPart initialisation section.

public onInit(): Promise<void> {
    return super.onInit().then(_ => {
        jQuery("#workbenchPageContent").prop("style", "max-width: none");
        jQuery(".SPCanvas-canvas").prop("style", "max-width: none");
        jQuery(".CanvasZone").prop("style", "max-width: none");
    });
}

On page load, your WebPart will have all available space on the page to use. If your testing this in your own WebPart, not the initial CSS for the .container class has a max-width set that will limit your WebPart from using more space.

For a complete functional demo please see https://github.com/littlejon/FullBleedWebPartTutorial

Categories
Sys Admin Systems Center 2012 Windows

Automatic Deployment Rules – Download Failed – System Center 2012 Configuration Manager

I have just started setting up a new System Center 2012 Configuration Manager server to test in my environment came up against an error that really didn’t make any sense at first.

After running the Automatic Deployment Rule it came up with the Error Code 0x87D20417 further investigation inside the logs in (C:\Program Files\Microsoft Configuration Manager\Logs) found the following entry in the ruleengine.log

Failed to download the update from internet. Error = 5

There was also a status message from SMS_RULE_ENGINE with Severity: Error

Content download failed.
Message: Failed to download one or more content files.
Source: SMS Rule Engine.

When I configured the the new Deployment Package in the “Select deployment package for this automatic deployment rule” section I created a new file share for the package. I set the NTFS permissions as specified in the documentation “Operations and Maintenance for Software Updates in Configuration Manager“.

What I failed to do was allow CHANGE permissions at the share level as I left that at the default READ ONLY setting.

Once I added the CHANGE permission the Automatic Deployment Rule ran and downloaded the software successfully.

Categories
iPhone

Fixed: Location Based Reminders Not Available in iOS 5

If you are having troubles finding location based reminders on your iOS 5 device you are probably using an Exchange based email account. If you have an Exchange account setup on your iPhone or iPad the new reminders app in iOS 5 will be using your Exchange Tasks List. It seems that the Exchange Tasks don’t support the metadata required to have a location based reminder.

To fix this issue you need to add a new Reminder List to your device. This can be easily done by tapping the Edit List button on the main reminders screen (this button has three horizontal lines on it).

Click Edit in the top right corner.

Under the On My iPhone section in the list, tap on Create New List…

Give it a name.

Click Done, and then Done again.

If you swipe sideways you will notice you have a new Reminder List called whatever you named it above. If you now add a reminder in your new list, then go into that reminder and tap “Show More…” you will now have to option to tap on Remind Me, At a Location.

Categories
Commvault Sys Admin VMWare

Commvault Simpana 9.0 with Granular File Recovery for Linux under VMWare

I am currently going through the process of installing a brand new Commvault installation. One thing I am evaluating is doing most of my backups via the Virtual Server iDataAgent, this will give me “bare metal” recovery of my VM’s as well as cover my individual file restore requirements. As at Simpana 8 granular file level recovery was only supported for NTFS volumes but with the release of Simpana 9 the documentation has been updated to remove the NTFS requirement. Also a nice little line that also says “Granular file-level recoveries are now supported for Linux-based VMware virtual machines.” under the new features in the documentation for Simpana 9.

So testing begins, and you would imagine given the above information that file-level recoveries for Linux would just work. Problem is it just doesn’t work out of the box, after hours of playing with settings and tick boxes and reading forum posts I finally found the solution I needed to get file-level recovery working.

Ok, so to get Linux backup working you need to add a registry entry on the Virtual Server iDataAgent proxy server (the documentation for which can be found here).

HKEY_LOCAL_MACHINE\SOFTWARE\CommVault Systems\Galaxy\Instance001\VirtualServer

Then add the following DWORD value

LinuxMetadataSupport    REG_DWORD    0x00000001

Restart the Commvault agent on the VMWare server for good measure and now take your backup.

As for file system support it seems very limited. I have tested the following setups:

Ubuntu Host
sda1 /boot ext3
sda3 / reiserfs
sda4 /data ext4

Centos Host
LVM2 with partition formatted in ext3

The only file systems that backed up were the EXT3 file systems, LVM appears to be supported as well. One can only assume that EXT2 would be supported, but I haven’t tested this.

Overall this solution can only get better, as more file systems are supported and the option to backup the linux systems on a file level are brought into the GUI it can only get easier from here. Personally I plan on moving forward using the Virtual Server iDataAgent to backup all my VM’s that don’t have special applications on them (ie, database, AD, and Exchange).

Categories
Group Policy Windows

Targeting User Group Policy Settings to a Specific Machine

Have you ever tried to set User Group Policies that you only want to work on a single machine or a set of machines? You will find that if you apply the group policy to a specific OU/Group of computers then unless the user accounts are in the same OU you will find that the User policies don’t get applied.

What you need is Loopback processing (See here for more details http://support.microsoft.com/kb/231287). Loopback processing is most often needed for kiosk type machine or common use computer lab scenarios.

Open up the Group Policy Object and navigate to “Computer Configuration -> Policies -> Administrative Templates -> System -> Group Policy“.

Open the “User Group Policy loopback processing mode” policy and set it to “Enabled“.

The next option is the “Mode” to use. Set the mode to “Replace” if you want no other User Policies to be in effect on the particular machines you are targeting, or “Merge” if you want all other User Policy settings to apply as well as the settings specified in the loopback policy.

I have been around Group Policy for a while and have never needed this setting before (the need for user targeted policies to a set of machines has never come up), so going through all the motions of setting policy security restrictions and changing the OU location of both the policy, the machines and the users in testing chewed up well over an hour of fiddling time. Setting a policy for loopback processing is easy, the hard part is realising that loopback processing is what you need to do in the first place.