Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 0 additions & 26 deletions api/src/org/labkey/api/query/QueryView.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.labkey.api.action.ApiQueryResponse;
import org.labkey.api.admin.notification.NotificationService;
import org.labkey.api.attachments.ByteArrayAttachmentFile;
import org.labkey.api.compliance.ComplianceService;
import org.labkey.api.data.AbstractTableInfo;
Expand Down Expand Up @@ -1132,17 +1131,6 @@ protected ActionButton createPrintButton()
return btnPrint;
}

private ActionButton createShareButton(@NotNull ActionURL url, @Nullable String tooltip)
{
ActionButton shareBtn = new ActionButton(url, "Share");
shareBtn.setActionType(ActionButton.Action.LINK);
shareBtn.setIconCls("share");
if (tooltip != null)
shareBtn.setTooltip(tooltip);

return shareBtn;
}

/**
* Make all links rendered in columns target the specified browser window/tab
*/
Expand Down Expand Up @@ -2026,23 +2014,9 @@ private void renderReportView(HttpServletRequest request, HttpServletResponse re

ButtonBar bar = new ButtonBar();
populateReportButtonBar(bar);

if (_report.allowShareButton(getUser(), getContainer()))
{
ActionURL shareUrl = PageFlowUtil.urlProvider(ReportUrls.class).urlShareReport(getContainer(), _report);
if (shareUrl != null)
bar.add(createShareButton(shareUrl, "Share report"));
}

dr.setButtonBar(bar);
}
dr.render(ctx, request, response);

// if the user is viewing a shared report, remove any notifications related to it
NotificationService.get().removeNotifications(
getContainer(), _report.getDescriptor().getReportId().toString(),
Collections.singletonList(Report.SHARE_REPORT_TYPE), getUser().getUserId()
);
}
catch (Exception e)
{
Expand Down
7 changes: 0 additions & 7 deletions api/src/org/labkey/api/reports/Report.java
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,6 @@

public interface Report extends AttachmentParent, ThumbnailProvider
{
String SHARE_REPORT_TYPE = "Report.ShareReport";

Report clone();
String getType();
String getTypeDescription();
Expand Down Expand Up @@ -84,11 +82,6 @@ public interface Report extends AttachmentParent, ThumbnailProvider
boolean canShare(User user, Container container);
boolean canShare(User user, Container container, List<ValidationError> errors);

/**
* Determine if this report type allows sharing via the shareReport action.
*/
boolean allowShareButton(User user, Container container);

/**
* Determines whether the user can delete this report
*/
Expand Down
2 changes: 0 additions & 2 deletions api/src/org/labkey/api/reports/ReportService.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,6 @@

public interface ReportService
{
String R_REPORT_CUSTOM_SHARING = "rReportCustomSharing";

// this logger is to enable all report loggers in the admin ui (org.labkey.api.reports.*)
@SuppressWarnings({"UnusedDeclaration", "SSBasedInspection"})
Logger packageLogger = LogManager.getLogger(ReportService.class.getPackageName());
Expand Down
9 changes: 1 addition & 8 deletions api/src/org/labkey/api/reports/report/AbstractReport.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
import org.labkey.api.admin.FolderExportContext;
import org.labkey.api.attachments.Attachment;
import org.labkey.api.attachments.AttachmentFile;
import org.labkey.api.attachments.AttachmentService;
import org.labkey.api.attachments.AttachmentParentType;
import org.labkey.api.attachments.AttachmentService;
import org.labkey.api.attachments.InputStreamAttachmentFile;
import org.labkey.api.data.Container;
import org.labkey.api.data.ContainerManager;
Expand Down Expand Up @@ -476,13 +476,6 @@ public boolean canShare(User user, Container container)
return canShare(user, container, new ArrayList<>());
}

@Override
public boolean allowShareButton(User user, Container container)
{
// See RReport, currently only allowing ShareReportAction for that report type
return false;
}

@Override
public boolean canDelete(User user, Container container)
{
Expand Down
1 change: 0 additions & 1 deletion api/src/org/labkey/api/reports/report/ReportUrls.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ public interface ReportUrls extends UrlProvider
ActionURL urlReportSections(Container c);
ActionURL urlManageViews(Container c);
ActionURL urlExportCrosstab(Container c);
ActionURL urlShareReport(Container c, Report r);
// Thumbnail or icon, depending on ImageType
ActionURL urlImage(Container c, Report r, ThumbnailService.ImageType type, @Nullable Integer revision);
ActionURL urlAttachmentReport(Container c, ActionURL returnUrl);
Expand Down
14 changes: 0 additions & 14 deletions api/src/org/labkey/api/reports/report/r/RReport.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@
import org.labkey.api.rstudio.RStudioService;
import org.labkey.api.security.SecurityManager;
import org.labkey.api.security.User;
import org.labkey.api.settings.OptionalFeatureService;
import org.labkey.api.thumbnail.Thumbnail;
import org.labkey.api.util.FileUtil;
import org.labkey.api.util.PageFlowUtil;
Expand Down Expand Up @@ -75,8 +74,6 @@
import java.util.Map;
import java.util.Set;

import static org.labkey.api.reports.ReportService.R_REPORT_CUSTOM_SHARING;

public class RReport extends ExternalScriptEngineReport
{
public static final String TYPE = "ReportService.rReport";
Expand Down Expand Up @@ -939,17 +936,6 @@ public String getEditAreaSyntax()
return "text/x-rsrc";
}

@Override
public boolean allowShareButton(User user, Container container)
{
if (OptionalFeatureService.get().isFeatureEnabled(R_REPORT_CUSTOM_SHARING))
{
// allow sharing if this R report is a DB report and the user canShare
return !getDescriptor().isModuleBased() && canShare(user, container);
}
return false;
}

public static class TestCase extends Assert
{
@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,6 @@
List<String> includedReports = bean.getIncludedReports();
String helpHtml = report.getDesignerHelpHtml();
boolean readOnly = bean.isReadOnly() || !report.canEdit(user, c);
boolean allowShareReport = report.allowShareButton(user, c);
Mode mode = bean.getMode();
boolean sourceAndHelp = mode.showSourceAndHelp(ctx) || bean.isSourceTabVisible();
String knitrFormat = bean.getKnitrFormat() != null ? bean.getKnitrFormat() : "None";
Expand Down Expand Up @@ -188,7 +187,6 @@
var panel = Ext4.create('LABKEY.ext4.ScriptReportPanel', {
renderTo : <%=q(renderId)%>,
readOnly : <%=readOnly%>,
allowShareReport: <%=allowShareReport%>,
minHeight : 500,
minWidth : 500,
initialURL : <%=q(initialViewURL)%>,
Expand Down
10 changes: 0 additions & 10 deletions query/src/org/labkey/query/QueryModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,6 @@
import org.labkey.api.security.roles.PlatformDeveloperRole;
import org.labkey.api.security.roles.Role;
import org.labkey.api.security.roles.RoleManager;
import org.labkey.api.settings.OptionalFeatureFlag;
import org.labkey.api.settings.OptionalFeatureService;
import org.labkey.api.stats.AnalyticsProviderRegistry;
import org.labkey.api.stats.SummaryStatisticRegistry;
Expand Down Expand Up @@ -149,7 +148,6 @@
import java.util.function.Supplier;

import static org.labkey.api.query.QueryService.USE_ROW_BY_ROW_UPDATE;
import static org.labkey.api.reports.ReportService.R_REPORT_CUSTOM_SHARING;

public class QueryModule extends DefaultModule
{
Expand Down Expand Up @@ -352,14 +350,6 @@ public void doStartup(ModuleContext moduleContext)
if (null != trustedAnalystRole)
trustedAnalystRole.addPermission(EditQueriesPermission.class);

OptionalFeatureService.get().addFeatureFlag(new OptionalFeatureFlag(R_REPORT_CUSTOM_SHARING,
"Restore custom R report sharing",
"Allows R reports to be shared on a per user basis. This option will be removed in LabKey Server 26.7.",
false,
false,
OptionalFeatureService.FeatureType.Deprecated)
);

McpService.get().register(new QueryMcp());
QueryUserSchema.register(this);
}
Expand Down
123 changes: 0 additions & 123 deletions query/src/org/labkey/query/reports/ReportsController.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
import org.labkey.api.action.ReturnUrlForm;
import org.labkey.api.action.SimpleViewAction;
import org.labkey.api.action.SpringActionController;
import org.labkey.api.admin.notification.NotificationService;
import org.labkey.api.attachments.Attachment;
import org.labkey.api.attachments.AttachmentFile;
import org.labkey.api.attachments.AttachmentForm;
Expand Down Expand Up @@ -81,7 +80,6 @@
import org.labkey.api.reports.model.ViewCategory;
import org.labkey.api.reports.model.ViewCategoryManager;
import org.labkey.api.reports.model.ViewInfo;
import org.labkey.api.reports.permissions.ShareReportPermission;
import org.labkey.api.reports.report.AbstractReport;
import org.labkey.api.reports.report.AbstractReportIdentifier;
import org.labkey.api.reports.report.ModuleReportIdentifier;
Expand Down Expand Up @@ -112,7 +110,6 @@
import org.labkey.api.security.RequiresNoPermission;
import org.labkey.api.security.RequiresPermission;
import org.labkey.api.security.RequiresSiteAdmin;
import org.labkey.api.security.SecurityManager;
import org.labkey.api.security.User;
import org.labkey.api.security.UserManager;
import org.labkey.api.security.permissions.AdminOperationsPermission;
Expand All @@ -123,7 +120,6 @@
import org.labkey.api.study.Dataset;
import org.labkey.api.study.Study;
import org.labkey.api.study.StudyService;
import org.labkey.api.study.StudyUrls;
import org.labkey.api.study.reports.CrosstabReport;
import org.labkey.api.thumbnail.BaseThumbnailAction;
import org.labkey.api.thumbnail.ThumbnailProvider;
Expand Down Expand Up @@ -281,16 +277,6 @@ public ActionURL urlExportCrosstab(Container c)
return new ActionURL(CrosstabExportAction.class, c);
}

@Override
public ActionURL urlShareReport(Container c, Report r)
{
if (r.getDescriptor().getReportId() == null)
return null;
ActionURL url = new ActionURL(ShareReportAction.class, c);
url.addParameter("reportId", r.getDescriptor().getReportId().toString());
return url;
}

@Override
public ActionURL urlImage(Container c, Report r, ImageType type, @Nullable Integer revision)
{
Expand Down Expand Up @@ -1036,115 +1022,6 @@ public void addNavTrail(NavTree root)
}
}

@RequiresPermission(ShareReportPermission.class)
public static class ShareReportAction extends FormViewAction<ShareReportForm>
{
Report _report = null;
List<User> _validRecipients = new ArrayList<>();

@Override
public ModelAndView getView(ShareReportForm form, boolean reshow, BindException errors)
{
return new JspView<>("/org/labkey/query/reports/view/shareReport.jsp", form, errors);
}

@Override
public void validateCommand(ShareReportForm form, Errors errors)
{
_validRecipients = SecurityManager.parseRecipientListForContainer(getContainer(), form.getRecipientList(), errors);
}

@Override
public boolean handlePost(ShareReportForm form, BindException errors) throws Exception
{
if (null != form.getReportId())
_report = form.getReportId().getReport(getViewContext());

if (!errors.hasErrors() && !_validRecipients.isEmpty() && _report != null)
{
for (User recipient : _validRecipients)
{
NotificationService.get().sendMessageForRecipient(
getContainer(), getUser(), recipient,
form.getMessageSubject(), form.getMessageBody(), _report.getRunReportURL(getViewContext()),
form.getReportId().toString(), Report.SHARE_REPORT_TYPE
);

// if the report is already public, send the notification but don't update the policy
if (!ReportDescriptor.REPORT_ACCESS_PUBLIC.equals(_report.getDescriptor().getAccess()))
ReportUtil.updateReportSecurityPolicy(getViewContext(), _report, recipient.getUserId(), true);

String auditMsg = "The following report was shared: recipient: " + recipient.getName() + " (" + recipient.getUserId() + ")"
+ ", reportId: " + _report.getDescriptor().getReportId()
+ ", name: " + _report.getDescriptor().getReportName();
StudyService.get().addStudyAuditEvent(getContainer(), getUser(), auditMsg);
}
}

return !errors.hasErrors();
}

@Override
public URLHelper getSuccessURL(ShareReportForm form)
{
if (_report != null && getContainer().hasPermission(getUser(), AdminPermission.class))
{
return urlProvider(StudyUrls.class).getManageReportPermissions(getContainer()).
addParameter(ReportDescriptor.Prop.reportId, _report.getDescriptor().getReportId().toString());
}

return form.getReturnActionURL(form.getDefaultUrl(getContainer()));
}

@Override
public void addNavTrail(NavTree root)
{
root.addChild("Share Report");
}
}

public static class ShareReportForm extends ReportDesignBean<Report>
{
private String _recipientList;
private String _messageSubject;
private String _messageBody;

public String getRecipientList()
{
return _recipientList;
}

public void setRecipientList(String recipientList)
{
_recipientList = recipientList;
}

public String getMessageSubject()
{
return _messageSubject;
}

public void setMessageSubject(String messageSubject)
{
_messageSubject = messageSubject;
}

public String getMessageBody()
{
return _messageBody;
}

public void setMessageBody(String messageBody)
{
_messageBody = messageBody;
}

public ActionURL getDefaultUrl(Container container)
{
return new ActionURL(ManageViewsAction.class, container);
}
}

@RequiresPermission(ReadPermission.class)
public class DetailsAction extends SimpleViewAction<ReportDesignBean<?>>
{
Expand Down
3 changes: 0 additions & 3 deletions query/src/org/labkey/query/reports/view/reportDetails.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
<%@ page import="org.labkey.api.reports.model.ReportPropsManager" %>
<%@ page import="org.labkey.api.reports.report.ModuleReportDescriptor" %>
<%@ page import="org.labkey.api.reports.report.ReportDescriptor" %>
<%@ page import="org.labkey.api.reports.report.ReportUrls" %>
<%@ page import="org.labkey.api.reports.report.view.ReportDesignBean" %>
<%@ page import="org.labkey.api.reports.report.view.ReportUtil" %>
<%@ page import="org.labkey.api.security.UserManager" %>
Expand Down Expand Up @@ -50,7 +49,6 @@

ActionURL vewReportURL = report.getRunReportURL(context);
ActionURL editReportURL = report.getEditReportURL(context, getActionURL());
ActionURL shareReportURL = urlProvider(ReportUrls.class).urlShareReport(getContainer(), report);

String type = report.getTypeDescription();
String category = "";
Expand Down Expand Up @@ -253,7 +251,6 @@
<td colspan="2">
<%= button("View Report").href(vewReportURL).target(report.getRunReportTarget()) %>
<%= report.canEdit(getUser(), getContainer()) && (editReportURL != null) ? button("Edit Report").href(editReportURL) : HtmlString.EMPTY_STRING%>
<%= report.allowShareButton(getUser(), getContainer()) && (shareReportURL != null) ? button("Share Report").href(shareReportURL) : HtmlString.EMPTY_STRING%>
</td>
</tr>
</table>
Loading