- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-11-2016 11:48 PM
Hi All,
I have created an attachment widget to use it as a variable in a catalog item. We are able to select the file but the file upload is not happening.Can anyone help me to identoiy the issue?
HTML
<div id="sc_cat_item" >
</div>
<now-attachments-list template="sp_attachment_single_line" ></now-attachments-list>
<label style="float:left;font-weight:normal;cursor:pointer;"><sp-attachment-button></sp-attachment-button><span style="padding-left:4px;">${please fill them in excel and attach it to this request.}<br>Click <a>here</a> to add an attachment</span></label>
<sp-message-dialog name="delete_attachment"
title="{{m.dialogTitle}}"
message="{{m.dialogMessage}}"
ok="{{m.dialogOK}}"
cancel="{{m.dialogCancel}}"
dialog-class="delete-dialog"/>
Client Script
function ($scope, $http, spUtil, nowAttachmentHandler, $rootScope, $sanitize, $window, $sce) {
var c = this;
c.quantity = 1;
$scope.data.sc_cat_item.description = $sce.trustAsHtml($scope.data.sc_cat_item.description);
$scope.m = $scope.data.msgs;
$scope.submitButtonMsg = $scope.m.submitMsg;
var ah = $scope.attachmentHandler = new nowAttachmentHandler(setAttachments, function() {});
ah.setParams('sp_portal', $scope.data._attachmentGUID, 1024 * 1024 * 24);
function setAttachments(attachments, action) {
$scope.attachments = attachments;
}
$scope.attachmentHandler.getAttachmentList();
$scope.confirmDeleteAttachment = function(attachment, $event) {
$rootScope.$broadcast("dialog.delete_attachment.show", {
parms: {
ok: function() {
$scope.attachmentHandler.deleteAttachment(attachment);
$rootScope.$broadcast("dialog.delete_attachment.close");
},
cancel: function() {
$rootScope.$broadcast("dialog.delete_attachment.close");
},
details: attachment.name
}
})
}
}
Server Script
// populate the 'data' variable with catalog item, variables, and variable view
(function() {
var m = data.msgs = {};
m.submitMsg = gs.getMessage("Submit");
m.submittedMsg = gs.getMessage("Submitted");
m.createdMsg = gs.getMessage("Created");
m.trackMsg = gs.getMessage("track using 'Requests' in the header or");
m.clickMsg = gs.getMessage("click here to view");
m.dialogTitle = gs.getMessage("Delete Attachment");
m.dialogMessage = gs.getMessage("Are you sure?");
m.dialogOK = gs.getMessage("OK");
m.dialogCancel = gs.getMessage("Cancel");
if (input)
data.sys_id = input.sys_id;
else
data.sys_id = $sp.getParameter("sys_id") || $sp.getParameter('sl_sys_id');
data._attachmentGUID = gs.generateGUID();
// portal can specify a catalog home page
data.sc_catalog_page = $sp.getDisplayValue("sc_catalog_page") || "sc_home";
var validatedItem = new GlideappCatalogItem.get(data.sys_id);
if (!validatedItem.canView())
return;
})()
Thanks and Regards,
Kirti
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-12-2016 12:17 AM
You need to clone the widget to modify it. Below is my best guess - i haven't tested the code, but are using something similar in my end.
Then add this line in the client script
//Send attachment guid variable widgets - wait for the widgets to load
setTimeout(function(){ $rootScope.$broadcast('sp.rp.attachguid', $scope.data._attachmentGUID); }, 1000);
In your own widget add a listener - and initialize the attachment handler in this
//Listen for the attachment GUID
$scope.$on('sp.rp.attachguid', function(e,guid) {
$scope.data._attachmentGUID = guid;
var ah = $scope.attachmentHandler = new nowAttachmentHandler(setAttachments, function() {});
ah.setParams('sp_portal', $scope.data._attachmentGUID, 1024 * 1024 * 24);
function setAttachments(attachments, action) {
$scope.attachments = attachments;
}
$scope.attachmentHandler.getAttachmentList();
});
Remove the line generating the guide in the server script
data._attachmentGUID = gs.generateGUID();
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-27-2016 03:32 AM
Hi Tange,
I tried with your script, it is uploading the files but not copying to the request table.
thanks and regards
Swamy
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-27-2016 03:37 AM
if i remove data._attachmentGUID = gs.generateGUID(); in server script, then the below line will not work.
setTimeout(function(){ $rootScope.$broadcast('sp.rp.attachguid', $scope.data._attachmentGUID); }, 1000);
$scope.$on('sp.rp.attachguid', function(e,guid) {
$scope.data._attachmentGUID = guid;
var ah = $scope.attachmentHandler = new nowAttachmentHandler(setAttachments, function() {});
ah.setParams('sp_portal', $scope.data._attachmentGUID, 1024 * 1024 * 24);
function setAttachments(attachments, action) {
$scope.attachments = attachments;
}
$scope.attachmentHandler.getAttachmentList();
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-10-2020 03:45 PM
hi, i'm having the same issue as you, were you able to fix this?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-27-2016 04:32 AM
worked like charm thank you
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-08-2017 02:55 AM
Kirti,
What does the complete solution look like? I created the widget but not sure where to add the listener code mentioned by Tange.
Thanks