webdav portal mobile view added, content type counted
This commit is contained in:
parent
4122caa16d
commit
346059195e
13 changed files with 111 additions and 41 deletions
|
@ -7,6 +7,7 @@ namespace WebsitePanel.WebDavPortal.WebConfigSections
|
||||||
private const string ExtensionKey = "extension";
|
private const string ExtensionKey = "extension";
|
||||||
private const string OwaViewKey = "OwaView";
|
private const string OwaViewKey = "OwaView";
|
||||||
private const string OwaEditorKey = "OwaEditor";
|
private const string OwaEditorKey = "OwaEditor";
|
||||||
|
private const string OwaMobileViewKey = "OwaMobileView";
|
||||||
|
|
||||||
[ConfigurationProperty(ExtensionKey, IsKey = true, IsRequired = true)]
|
[ConfigurationProperty(ExtensionKey, IsKey = true, IsRequired = true)]
|
||||||
public string Extension
|
public string Extension
|
||||||
|
@ -28,5 +29,13 @@ namespace WebsitePanel.WebDavPortal.WebConfigSections
|
||||||
get { return this[OwaEditorKey].ToString(); }
|
get { return this[OwaEditorKey].ToString(); }
|
||||||
set { this[OwaEditorKey] = value; }
|
set { this[OwaEditorKey] = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[ConfigurationProperty(OwaMobileViewKey, IsKey = true, IsRequired = true)]
|
||||||
|
public string OwaMobileViev
|
||||||
|
{
|
||||||
|
get { return this[OwaMobileViewKey].ToString(); }
|
||||||
|
set { this[OwaMobileViewKey] = value; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -418,6 +418,7 @@ namespace WebsitePanel.WebDav.Core
|
||||||
SetComment(item.Comment);
|
SetComment(item.Comment);
|
||||||
SetCreatorDisplayName(item.CreatorDisplayName);
|
SetCreatorDisplayName(item.CreatorDisplayName);
|
||||||
SetLastModified(item.LastModified);
|
SetLastModified(item.LastModified);
|
||||||
|
|
||||||
foreach (Property property in item.Properties)
|
foreach (Property property in item.Properties)
|
||||||
{
|
{
|
||||||
SetProperty(property);
|
SetProperty(property);
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
using System.Net.Mime;
|
||||||
using System.Net.Security;
|
using System.Net.Security;
|
||||||
using System.Net.Sockets;
|
using System.Net.Sockets;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
@ -28,7 +29,6 @@ namespace WebsitePanel.WebDav.Core
|
||||||
private bool _checkedOut = false;
|
private bool _checkedOut = false;
|
||||||
private string _comment = "";
|
private string _comment = "";
|
||||||
private long _contentLength;
|
private long _contentLength;
|
||||||
private string _contentType = "";
|
|
||||||
private DateTime _creationDate = new DateTime(0);
|
private DateTime _creationDate = new DateTime(0);
|
||||||
private string _creatorDisplayName = "";
|
private string _creatorDisplayName = "";
|
||||||
private ICredentials _credentials = new NetworkCredential();
|
private ICredentials _credentials = new NetworkCredential();
|
||||||
|
@ -79,7 +79,14 @@ namespace WebsitePanel.WebDav.Core
|
||||||
|
|
||||||
public string ContentType
|
public string ContentType
|
||||||
{
|
{
|
||||||
get { return _contentType; }
|
get
|
||||||
|
{
|
||||||
|
{
|
||||||
|
var property = _properties.FirstOrDefault(x => x.Name.Name == "getcontenttype");
|
||||||
|
|
||||||
|
return property == null ? MediaTypeNames.Application.Octet : property.StringValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -47,25 +47,14 @@ namespace WebsitePanel.WebDav.Core.Managers
|
||||||
|
|
||||||
if (string.IsNullOrWhiteSpace(pathPart))
|
if (string.IsNullOrWhiteSpace(pathPart))
|
||||||
{
|
{
|
||||||
var resources = ConnectToWebDavServer().Select(x => new WebDavResource { Href = new Uri(x.Url), ItemType = ItemType.Folder }).ToArray();
|
children = ConnectToWebDavServer().Select(x => new WebDavResource
|
||||||
|
|
||||||
var items = WSP.Services.EnterpriseStorage.GetEnterpriseFolders(WspContext.User.ItemId);
|
|
||||||
|
|
||||||
foreach (var resource in resources)
|
|
||||||
{
|
{
|
||||||
var folder = items.FirstOrDefault(x => x.Name == resource.DisplayName);
|
Href = new Uri(x.Url),
|
||||||
|
ItemType = ItemType.Folder,
|
||||||
if (folder == null)
|
ContentLength = x.Size,
|
||||||
{
|
AllocatedSpace = x.FRSMQuotaMB,
|
||||||
continue;
|
IsRootItem = true
|
||||||
}
|
}).ToArray();
|
||||||
|
|
||||||
resource.ContentLength = folder.Size;
|
|
||||||
resource.AllocatedSpace = folder.FRSMQuotaMB;
|
|
||||||
resource.IsRootItem = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
children = resources;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -27,6 +27,10 @@ textarea {
|
||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
/*text-align:center;*/
|
/*text-align:center;*/
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
margin-top: 14px;
|
||||||
|
margin-left: 1px;
|
||||||
|
margin-right: 1px;
|
||||||
|
padding: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.element-container .element {
|
.element-container .element {
|
||||||
|
@ -235,6 +239,10 @@ tr.selected-file {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.file-actions-menu .file-upload {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
#message-area {
|
#message-area {
|
||||||
margin-top: 15px;
|
margin-top: 15px;
|
||||||
}
|
}
|
||||||
|
@ -249,6 +257,7 @@ tr.selected-file {
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-block {
|
.search-block {
|
||||||
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-block input, .search-block label {
|
.search-block input, .search-block label {
|
||||||
|
@ -257,6 +266,39 @@ tr.selected-file {
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.elements-container {
|
||||||
|
padding-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 768px) {
|
||||||
|
.col-sm-2.element-container {
|
||||||
|
width: 15.666667%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.col-sm-2.element-container {
|
||||||
|
float: left;
|
||||||
|
width: 48%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@media (max-width: 250px) {
|
||||||
|
.col-sm-2.element-container {
|
||||||
|
float: left;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.back-button {
|
||||||
|
font-size: 30px;
|
||||||
|
color: white;
|
||||||
|
padding-left: 10px;
|
||||||
|
padding-top: 3px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
/* Theme Mods */
|
/* Theme Mods */
|
||||||
|
|
||||||
input,div{border-radius:0px!important;}
|
input,div{border-radius:0px!important;}
|
||||||
|
|
|
@ -15,6 +15,7 @@ using WebsitePanel.WebDav.Core.Client;
|
||||||
using WebsitePanel.WebDav.Core.Config;
|
using WebsitePanel.WebDav.Core.Config;
|
||||||
using WebsitePanel.WebDav.Core.Entities.Account.Enums;
|
using WebsitePanel.WebDav.Core.Entities.Account.Enums;
|
||||||
using WebsitePanel.WebDav.Core.Exceptions;
|
using WebsitePanel.WebDav.Core.Exceptions;
|
||||||
|
using WebsitePanel.WebDav.Core.Extensions;
|
||||||
using WebsitePanel.WebDav.Core.Interfaces.Managers;
|
using WebsitePanel.WebDav.Core.Interfaces.Managers;
|
||||||
using WebsitePanel.WebDav.Core.Interfaces.Managers.Users;
|
using WebsitePanel.WebDav.Core.Interfaces.Managers.Users;
|
||||||
using WebsitePanel.WebDav.Core.Interfaces.Security;
|
using WebsitePanel.WebDav.Core.Interfaces.Security;
|
||||||
|
@ -79,12 +80,11 @@ namespace WebsitePanel.WebDavPortal.Controllers
|
||||||
return new HttpStatusCodeResult(HttpStatusCode.NoContent);
|
return new HttpStatusCodeResult(HttpStatusCode.NoContent);
|
||||||
}
|
}
|
||||||
|
|
||||||
string fileName = pathPart.Split('/').Last();
|
|
||||||
|
|
||||||
if (_webdavManager.IsFile(pathPart))
|
if (_webdavManager.IsFile(pathPart))
|
||||||
{
|
{
|
||||||
var fileBytes = _webdavManager.GetFileBytes(pathPart);
|
var resource = _webdavManager.GetResource(pathPart);
|
||||||
return File(fileBytes, MediaTypeNames.Application.Octet, fileName);
|
|
||||||
|
return new FileStreamResult(resource.GetReadStream(), resource.ContentType);
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
|
@ -293,22 +293,25 @@ namespace WebsitePanel.WebDavPortal.Controllers
|
||||||
var uri = string.Format("{0}/{1}WOPISrc={2}&access_token={3}", WebDavAppConfigManager.Instance.OfficeOnline.Url, owaOpenerUri, Server.UrlEncode(wopiSrc), Server.UrlEncode(accessToken.AccessToken.ToString("N")));
|
var uri = string.Format("{0}/{1}WOPISrc={2}&access_token={3}", WebDavAppConfigManager.Instance.OfficeOnline.Url, owaOpenerUri, Server.UrlEncode(wopiSrc), Server.UrlEncode(accessToken.AccessToken.ToString("N")));
|
||||||
|
|
||||||
string fileName = fileUrl.Split('/').Last();
|
string fileName = fileUrl.Split('/').Last();
|
||||||
|
string folder = pathPart.ReplaceLast(fileName, "").Trim('/');
|
||||||
|
|
||||||
return View("ShowOfficeDocument", new OfficeOnlineModel(uri, fileName));
|
return View("ShowOfficeDocument", new OfficeOnlineModel(uri, fileName, folder));
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionResult ViewOfficeDocument(string org, string pathPart)
|
public ActionResult ViewOfficeDocument(string org, string pathPart)
|
||||||
{
|
{
|
||||||
var owaOpener = WebDavAppConfigManager.Instance.OfficeOnline.Single(x => x.Extension == Path.GetExtension(pathPart));
|
var owaOpener = WebDavAppConfigManager.Instance.OfficeOnline.Single(x => x.Extension == Path.GetExtension(pathPart));
|
||||||
|
|
||||||
return ShowOfficeDocument(org, pathPart, owaOpener.OwaView);
|
var owaOpenerUrl = Request.Browser.IsMobileDevice ? owaOpener.OwaMobileViev : owaOpener.OwaView;
|
||||||
|
|
||||||
|
return ShowOfficeDocument(org, pathPart, owaOpenerUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionResult EditOfficeDocument(string org, string pathPart)
|
public ActionResult EditOfficeDocument(string org, string pathPart)
|
||||||
{
|
{
|
||||||
var permissions = _webDavAuthorizationService.GetPermissions(WspContext.User, pathPart);
|
var permissions = _webDavAuthorizationService.GetPermissions(WspContext.User, pathPart);
|
||||||
|
|
||||||
if (permissions.HasFlag(WebDavPermissions.Write) == false)
|
if (permissions.HasFlag(WebDavPermissions.Write) == false || Request.Browser.IsMobileDevice)
|
||||||
{
|
{
|
||||||
return new RedirectToRouteResult(FileSystemRouteNames.ViewOfficeOnline, null);
|
return new RedirectToRouteResult(FileSystemRouteNames.ViewOfficeOnline, null);
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,11 +6,13 @@ namespace WebsitePanel.WebDavPortal.Models
|
||||||
{
|
{
|
||||||
public string Url { get; set; }
|
public string Url { get; set; }
|
||||||
public string FileName { get; set; }
|
public string FileName { get; set; }
|
||||||
|
public string Backurl { get; set; }
|
||||||
|
|
||||||
public OfficeOnlineModel(string url, string fileName)
|
public OfficeOnlineModel(string url, string fileName, string backUrl)
|
||||||
{
|
{
|
||||||
Url = url;
|
Url = url;
|
||||||
FileName = fileName;
|
FileName = fileName;
|
||||||
|
Backurl = backUrl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,4 +1,5 @@
|
||||||
@model WebsitePanel.WebDavPortal.Models.OfficeOnlineModel
|
@using WebsitePanel.WebDavPortal.UI.Routes
|
||||||
|
@model WebsitePanel.WebDavPortal.Models.OfficeOnlineModel
|
||||||
@{
|
@{
|
||||||
Layout = null;
|
Layout = null;
|
||||||
}
|
}
|
||||||
|
@ -8,9 +9,25 @@
|
||||||
<head>
|
<head>
|
||||||
<meta name="viewport" content="width=device-width" />
|
<meta name="viewport" content="width=device-width" />
|
||||||
<title>@Html.Raw(Model.FileName)</title>
|
<title>@Html.Raw(Model.FileName)</title>
|
||||||
|
@if (Request.Browser.IsMobileDevice)
|
||||||
|
{
|
||||||
|
@Styles.Render("~/Content/css")
|
||||||
|
}
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<iframe src='@Model.Url' width="100%" height="100%" frameborder='0' style="bottom: 0px; left: 0px; position: fixed; right: 0px; top: 0px;">
|
@if (Request.Browser.IsMobileDevice)
|
||||||
|
{
|
||||||
|
<div class="navbar navbar-inverse navbar-fixed-top">
|
||||||
|
<div class="container top-container">
|
||||||
|
<div class="navbar-header">
|
||||||
|
<a class="back-button" href="@Url.RouteUrl(FileSystemRouteNames.ShowContentPath, new {pathPart = Model.Backurl})">
|
||||||
|
<i class="glyphicon glyphicon-circle-arrow-left"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
<iframe src="@Model.Url" width="100%" height="100%" frameborder='0' style="position: absolute;top: 0;left: 0;bottom: 0;right: 0; @(Request.Browser.IsMobileDevice ? "margin-top: 50px;" : "")">
|
||||||
This is an embedded
|
This is an embedded
|
||||||
<a target='_blank' href='http://office.com'>Microsoft Office</a> document, powered by
|
<a target='_blank' href='http://office.com'>Microsoft Office</a> document, powered by
|
||||||
<a target='_blank' href='http://office.com/webapps'>Office Web Apps</a>.
|
<a target='_blank' href='http://office.com/webapps'>Office Web Apps</a>.
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
switch (opener)
|
switch (opener)
|
||||||
{
|
{
|
||||||
case FileOpenerType.OfficeOnline:
|
case FileOpenerType.OfficeOnline:
|
||||||
isTargetBlank = true;
|
isTargetBlank = !Request.Browser.IsMobileDevice;
|
||||||
var pathPart = Model.Href.AbsolutePath.Replace("/" + WspContext.User.OrganizationId, "").TrimStart('/');
|
var pathPart = Model.Href.AbsolutePath.Replace("/" + WspContext.User.OrganizationId, "").TrimStart('/');
|
||||||
href = string.Concat(Url.RouteUrl(FileSystemRouteNames.EditOfficeOnline, new { org = WspContext.User.OrganizationId, pathPart = "" }), pathPart);
|
href = string.Concat(Url.RouteUrl(FileSystemRouteNames.EditOfficeOnline, new { org = WspContext.User.OrganizationId, pathPart = "" }), pathPart);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
<div class="navbar-right">
|
<div class="file-upload navbar-right">
|
||||||
@if (Request.Browser.IsMobileDevice == false)
|
@if (Request.Browser.IsMobileDevice == false)
|
||||||
{
|
{
|
||||||
<div class="btn-toolbar change-view-block" role="toolbar">
|
<div class="btn-toolbar change-view-block" role="toolbar">
|
||||||
|
|
|
@ -85,12 +85,12 @@
|
||||||
<add browser="Safari" version="4" />
|
<add browser="Safari" version="4" />
|
||||||
</owaSupportedBrowsers>
|
</owaSupportedBrowsers>
|
||||||
<officeOnline isEnabled="True" url="https://vir-owa.virtuworks.net" cobaltFileTtl="1">
|
<officeOnline isEnabled="True" url="https://vir-owa.virtuworks.net" cobaltFileTtl="1">
|
||||||
<add extension=".doc" OwaView="wv/wordviewerframe.aspx?" OwaEditor="wv/wordviewerframe.aspx?" />
|
<add extension=".doc" OwaView="wv/wordviewerframe.aspx?" OwaEditor="wv/wordviewerframe.aspx?" OwaMobileView="wv/mWord.aspx?wdMobileHost=3&"/>
|
||||||
<add extension=".docx" OwaView="wv/wordviewerframe.aspx?" OwaEditor="we/wordeditorframe.aspx?" />
|
<add extension=".docx" OwaView="wv/wordviewerframe.aspx?" OwaEditor="we/wordeditorframe.aspx?" OwaMobileView="wv/mWord.aspx?wdMobileHost=3&"/>
|
||||||
<add extension=".xls" OwaView="x/_layouts/xlviewerinternal.aspx?" OwaEditor="x/_layouts/xlviewerinternal.aspx?edit=1&" />
|
<add extension=".xls" OwaView="x/_layouts/xlviewerinternal.aspx?" OwaEditor="x/_layouts/xlviewerinternal.aspx?edit=1&" OwaMobileView="x/_layouts/mobile/mXL.aspx?wdMobileHost=3&"/>
|
||||||
<add extension=".xlsx" OwaView="x/_layouts/xlviewerinternal.aspx?" OwaEditor="x/_layouts/xlviewerinternal.aspx?edit=1&" />
|
<add extension=".xlsx" OwaView="x/_layouts/xlviewerinternal.aspx?" OwaEditor="x/_layouts/xlviewerinternal.aspx?edit=1&" OwaMobileView="x/_layouts/mobile/mXL.aspx?wdMobileHost=3&" />
|
||||||
<add extension=".ppt" OwaView="p/PowerPointFrame.aspx?" OwaEditor="p/PowerPointFrame.aspx?" />
|
<add extension=".ppt" OwaView="p/PowerPointFrame.aspx?" OwaEditor="p/PowerPointFrame.aspx?" OwaMobileView="p/mPPT.aspx?wdMobileHost=3&"/>
|
||||||
<add extension=".pptx" OwaView="p/PowerPointFrame.aspx?" OwaEditor="p/PowerPointFrame.aspx?PowerPointView=EditView&" />
|
<add extension=".pptx" OwaView="p/PowerPointFrame.aspx?" OwaEditor="p/PowerPointFrame.aspx?PowerPointView=EditView&" OwaMobileView="p/mPPT.aspx?wdMobileHost=3&"/>
|
||||||
</officeOnline>
|
</officeOnline>
|
||||||
</webDavExplorerConfigurationSettings>
|
</webDavExplorerConfigurationSettings>
|
||||||
<!--
|
<!--
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue