Best practice in storing data to be used on multiple devices? - facebook-graph-api

I'm currently making Microsoft Teams custom Tabs that utilize Sharepoint to store information. And, there could be multiple instances of that Tabs , each with its own Sharepoint file. 
What is the best way to link or connect the  Tabs to its corresponding Sharepoint File? Is there a way to store information on Microsoft Teams Tabs that persist through different device?
At the moment I store Tabs' entityId obtained from MS Teams SDK context on the Sharepoint Files related to that Tabs. Then on the custom tab, I queried the sharepoint site for the file that has a matching entityId with the tab.

As part of adding the tab to the Team, there is a "configuration" page, where you set the final url for the specific instance of that tab. Part of that configuration could be setting a custom querystring variable that will get passed to the tab, telling it which file to access. For instance, the final tab url could be:
https://my.domain.com/mytab.html?spfile=abc.docx
and another tab with:
https://my.domain.com/mytab.html?spfile=def.docx
That's exactly what the "configuration" page is for when you set up a tab, I think -scenarios like this.

Related

Google Data Studio - How to embed a dashboard that the user can only see the embedded dashboard and not go to the Data Studio page?

Is there a way to remove the bottom Data Studio pop-up of my embedded dashboard?
The reason is that I want to embed a dashboard on my website, but I don't want to the user be able to go to the dashboard on Data Studio and be able to copy the link and send it over to other people for security issues.
You can't do this without violating Google Terms of services. As you can see here.
If you use some script in your page to hide this elements, its considered violating terms of services and it may be identified and they can remove your content, deactivate your account and among other actions.
In summary, its better not. And there are useful links on the footer, as the buttons to change report pages.

How to give View Level Permission to user in sharepoint List

I have Created the SharePoint custom List with 3 views(Ex.test1,test2,test3).
I want to assign 3 views to 3 user,one should not have permission to view other's view.
Any help would be appreciated.
As far as I know, this is simply not possible, i.e. assigning views to a certain user. You can have 'Public' views (visible to everyone with access to the list as the name implies) and 'Personal' views (visible only to the user who created them, the user must have the relevant permission enabled for this). Personal views cannot be shared.
Also, if it is critical that data is only visible to certain users and not others, a user can look at items not in their View by simply changing the ID in the Item View in the URL so View filtering is not a good way to go about this.
Could you please elaborate on what exactly are you trying to achieve, i.e what is the difference between the views etc.?
UPDATED:
Here you can get another good solution.
https://sharepoint.stackexchange.com/questions/253723/restrict-list-view-to-role-sp-o365
It is really good solution because you need only admin rights and no code.
You need to create folders, break role inheritance and add permissions on folders.
My OLD answer:
From my experience It is depend on what is your expectations from solution, your limits, what you want to get and what things you can sacrifice and in some cases what SharePoint edition you are using.
Note: SharePoint does not have out-of-box fully customizable list item permissions.
I can say about some expectations, some details, some solutions and workarounds and how to implement this.
You can try to get something that applied to you:
.1. You want to disallow users to see other users views. But:
users with specific permissions can create their own views and therefore they can create views with all fields and all list items data from other disallowed views,
users can get data about all fields in list items and all list items from REST API, JSOM API and other SharePoint out-of-box web services,
users can open any list item, change URL item ID to another and see any data from other list item.
To achieve this you can:
.1.1. Open list under each user and create its own Personal View.
Personal Views displayed only for individual users.
.1.2. Create Public View and set its Target Audience.
Open view page -> in right corner click Gear icon -> Edit Page -> on the page click arrow icon on list view web part -> Edit Web Part -> Section "Advanced" -> Field "Target Audiences".
If you does not have this option then enable target audiences.
List Settings -> Audience targeting settings -> Enable audience targeting.
In audiences you can specify SharePoint users or groups who has permissions to see this web part.
Here you can see different uses of audiences and how to enable it on list or library: https://support.office.com/en-us/article/target-content-to-specific-audiences-33d84cb6-14ed-4e53-a426-74c38ea32293
.1.3. Create Public View, open its page, edit page, delete List View Web Part, add Content Query Web Part and set its Target Audience.
Here you can see info about Target Audiences:
https://support.office.com/en-us/article/target-content-to-specific-audiences-33d84cb6-14ed-4e53-a426-74c38ea32293
But I didn't perform this by myself.
.1.4. Add javacript to list view page.
This javascript will check user permissions and hide view or redirect user to some other location or will make other actions.
.2. Users cannot see other users created list items from any source (any list views, any API and web services).
.2.1.
Note: this is limited. User can only read, edit list items which created by him. You cannot apply this on other users created list items.
To achieve this you can:
List Settings -> Section "Advanced settings" -> Block "Item-level Permissions" -> "Read items that were created by the user" and "Create items and edit items that were created by the user" options.
.2.2. Create different lists for different users with different permissions.
.2.3.
Note: this is limited by SharePoint unique permissions limits.
You can create SharePoint workflow that run on list item creation. This workflow will break list item role inheritance and set new permissions for this items by some conditions.
This is may be good but here some limits exists. SharePoint limit list to have more than some limit number of list item unique permissions.
.2.4. I don't know if SharePoint has some limits to this but you can try and I don't know if you can perform this from public API but you can try to investigate.
You can create SharePoint workflow that run on list item creation. This workflow will set Target Audiences on list item.
Here you can see info about Target Audiences:
https://support.office.com/en-us/article/target-content-to-specific-audiences-33d84cb6-14ed-4e53-a426-74c38ea32293
.2.5. If you use SharePoint On-premise edition then you can add:
.2.5.1. List event receiver that run on list item Create event and perform following actions:
- break list item role inheritance and set new permissions for this items by some conditions
OR
- set Target Audiences on list item
.2.5.2. Create Timer job, deploy, schedule it in SharePoint Central Administration.
This timer job will be check newly created list items periodically and:
- break list item role inheritance and set new permissions for this items by some conditions
OR
- set Target Audiences on list item
.2.6. You can create Console Application (c# language) that connect to SharePoint, check newly created list items periodically and:
- break list item role inheritance and set new permissions for this items by some conditions
OR
- set Target Audiences on list item.
This console app can be scheduled on any server in your company through Windows Task Scheduler.
.2.7. You can write Powershell script that connect to SharePoint, check newly created list items periodically and:
- break list item role inheritance and set new permissions for this items by some conditions
OR
- set Target Audiences on list item.
This Powershell script can be scheduled on any server in your company through Windows Task Scheduler.
.2.8. You can create Windows Service (c# language) that connect to SharePoint, check newly created list items periodically and:
- break list item role inheritance and set new permissions for this items by some conditions
OR
- set Target Audiences on list item.
This windows service can be installed on any server in your company.
.2.9. May be you can create some other periodically running code (like Workflow, Console App, PowerShell script, Windows Service) in any server.
This code will:
- break list item role inheritance and set new permissions for this items by some conditions
OR
- set Target Audiences on list item.
I think code wrapper not limited to any implementation.
I think this ways is applicable to many cases.
If you want more customizable control, or you have some limits in implementation, then you can create many workarounds by many ways. Workaround can close many permissions holes but may be not all holes:
.1. You don't want user can create views from list view page UI.
You can add javascript to hide ribbon, buttons or some other UI elements to disallow user to create its own view or to switch to another user view.
If user is smart he can avoid this by using REST API, JSOM or web services to get neccessary list item data.
.2. You don't want user can see any list item data changing URL list item ID to another.
.2.1. You can add some javascript on default form pages.
On New Item form page, on Display Item form page and on Edit Item form page.
This javascript will be check user permissions and hide data or redirect user back to list view page or somewhere.
.2.2. You can create HttpModule that intercept web requests and check user permissions and redirect him to another page if he don't have permissions.
HttpModule must be added to IIS and SharePoint web config.
.3. You can try to disallow REST API, JSOM using but I didn't do that.
I think you can add HttpModule to IIS that will intercept web requests and check user permissions and return bad request HTTP status codes and error messages.
But I didn't yet try this by myself.
Here you must know all API endpoints to close access to them.
May be here exists many other different workarounds but I don't remember about them now.
Try something from what I said. May be it help you.

Access 2013 on SharePoint 2013 Online - Multiple Questions

Very long time since I even look at Access.. but on SPO, with a database on Azure it seems really nice ... wondering tho..
Any way to remove that left pane with the Databases from the UI?
Set a list button to go to a URL formatted using selected column fields in the row?
Join in oData datasource like SharePoint Online List? Validate against SharePoint list Data? set dropdowns to lookup using SharePoint list data?
Any file upload control and upload to a sharePoint Library? A way to add metadata to a file and do some validation - like does file exist with this metadata. Dynamically rename files to some unique string.
Perform complex field validation with REGEX?
Secure the application and database to SharePoint groups.
What's the business language of choice? Not clear on how to edit and save macros. Can it make calls to webservices?
Any way to change that obsure url you get for the App in SharePoint 2013 Online?
Any way to remove that left pane with the Databases from the UI?
No, but there is a workaround. Right click on the tables you don't want to be visible, and select the option to hide them individually. You can also rename the table-views in that pane, so they appear to have more user-friendly names for your end-users.
Set a list button to go to a URL formatted using selected column fields in the row?
The best way to achieve something like this would be using a hyperlink control attached to a calculated column in your table/query where the URL and display text are computed and linked together automatically. If you need list functionality, you can allow the user to select an item in the list, and have that automatically update a separate hyperlink control to provide the link functionality.
Join in oData data source like SharePoint Online List? Validate against SharePoint list Data? set dropdowns to lookup using SharePoint list data?
Access 2013 Web Apps cannot pull external data at this time. Access 2013 Web Apps only accept incoming data connections e.g. a MS-SQL or oData service can use industry-standard methods to connect to your Access Web App and validate data.
Any file upload control and upload to a SharePoint Library? A way to add metadata to a file and do some validation - like does file exist with this metadata. Dynamically rename files to some unique string.
The only file support currently provided by Access Web Apps is in the form of images uploaded to an image field inside a table. This is useful to add people's photos to their records in a "contacts" table, and things like this. Other than that, you will need to use a custom SharePoint library interface for this type of functionality.
Perform complex field validation with REGEX?
Not currently supported to my knowledge.
Secure the application and database to SharePoint groups.
This functionality is handled within SharePoint, not within Access or SQL Azure. Secure your SharePoint site collection as needed, and these security settings will apply appropriately to read and/or write operations by SharePoint users within your database. e.g. a SharePoint "visitor" (read-only access) will not be able to edit any data in your database - only view it.
What's the business language of choice? Not clear on how to edit and save macros. Can it make calls to web-services?
In Access 2013 Web Apps, VBA is no longer supported. Macros have to be written using the GUI "wizardy" macro interface, which greatly limits the scope of available operations. As a result, you cannot perform more complex tasks, such as making calls to external web-services. However, for basic data operations and UI operations, the GUI macro interface serves the purpose well.
Any way to change that obscure URL you get for the App in SharePoint 2013 Online?
The URL is randomly assigned when you create an Access 2013 Web App, but is guaranteed to never change after it is assigned. Therefore, you could reasonably use your DNS/web-host to "mask" the URL with a CNAME or other type of HTTP redirection. There are many ways to do this, and they are all external to SharePoint and Access 2013 Web Apps, so it's up to your DNS and web providers to support this.

Why is Insert > Related List not working in sharepoint 2013?

Hi I have got a few lists with Lookup fields from Source lists. I wish to have a Related lists (Webpart connections from 2007 days) where I select item from master and then child records are displayed. Although I have followed the instructions on the below article, the "relationship" bit is not working. The Related records from the child lists are not filtering rather showing all records from the child table.
http://office.microsoft.com/en-us/sharepoint-help/create-list-relationships-by-using-unique-and-lookup-columns-HA102771358.aspx
I also encountered this issue, and the solution is pretty simple, but not very obvious. When creating a new page, you MUST be sure that you create a page of type Web Part Page. When you use the default "Add a Page" option from the site settings menu, the default page type is a Wiki page, not a web part page. Even though you can add web parts to a Wiki page, the Wiki page does not include the functionality for implementing web part connections.
Once I created a page using one of the Web Part Page types, I was able to use web part connections.
have you tried this:
Browse to the affected page, and then open the page in edit mode.
Click the drop-down arrow in the upper-right corner of the Web Part for the tasks list, and then click Edit Web Part.
On the right side of the page in the Web Part properties controls, click the plus sign (+) on the Miscellaneous section, click to select the Server Render checkbox, and then click OK.
Save the changes to the page.
source: http://support.microsoft.com/kb/2924913

customising announcement list in sharepoint 2010

I am trying to add a customised announcement list to the main page of my SharePoint site on this list, there will be 7 columns on the list but the challenge i'm having now is how to only display 3 out of the 7 columns on the site and the other columns will only be displayed when user clicks on add new announcement or clicks on the list itself. Please can anyone give me an idea of how to achieve this.
E.g: Assuming i customised an announcement list to have column: management, operations, Assets, Finance,HR,QHSE and Technical and added it on my SharePoint page via web-part, How can i make it to only display 3 of the 7 columns like management, operations, Assets while other columns will only be seen whenever users click on the add new announcement or go directly to the list itself. Thanks
For displaying only 3 columns, create a view and set it in the webpart options.
When you create a new view of a SharePoint list, it essentially creates a new .aspx page with the view customized per your definition. This can be done for standard views easily from the SharePoint list's web interface. This is the suggestion from Le_Freddo and should work for creating custom views but not for creating custom edit pages.
For that I believe you need to use SharePoint Designer. Open the site in SharePoint Designer then locate the list you're working on under 'Lists' in the 'FolderList'. You'll see 4 pages, AllItems, DispForm, EditForm, and NewForm. Make a copy of the EditForm (before you modify it), then open the EditForm to make your changes to it. You can add or remove fields from the page. In this way you can customize the Edit form to show all fields or only a subset.
You can also use this method to customize the other views (removing columns you don't want users to see).
When you're done, you can direct your List to use the new pages or define which page to use for each operation (View-All, Display, Edit, Create New) by setting the List's properties (right click the list in the Folder View, select Properties, then the 'Supporting Files' tab will have links to the pages configured for these actions).
Good luck...