protected void cmdSubmit_Click(object sender, EventArgs e) { ///////////////////////////////////////////////////////////////////////////////////////////////////////// // EQUELLA SOAP Contribution Code ///////////////////////////////////////////////////////////////////////////////////////////////////////// //Create the item on the server. The general process is: // 1. newItem (creates a new item in the staging folder, doesn't get committed until saveItem is called) // 2. set metadata on the item XML (some are system fields e.g. /xml/item/attachments, others could be custom schema fields) // 3. saveItem (commits the changes to a previous newItem or editItem call) string collectionUuid = lstCollections.SelectedValue; string itemName = txtItemName.Text; string itemDescription = txtItemDescription.Text; string attachmentDescription = txtAttachmentDescription.Text; int filesize = fileAttach.FileBytes.Length; EQUELLASOAP equella = new EQUELLASOAP( ConfigurationManager.AppSettings["username"], ConfigurationManager.AppSettings["password"]); XElement itemXml = equella.NewItem(collectionUuid); XElement item = itemXml.Element("item"); //set item name and description string stagingUuid = (string)item.Element("staging"); //name and description xpaths are collection dependent! You need to find the correct xpath to use for the name and description nodes XElement collection = equella.GetCollection(collectionUuid); XElement schema = equella.GetSchema((string)collection.Element("schemaUuid")); string itemNameXPath = (string)schema.Element("itemNamePath"); string itemDescriptionXPath = (string)schema.Element("itemDescriptionPath"); itemXml.ElementOrCreateXpath(itemNameXPath).SetValue(itemName); itemXml.ElementOrCreateXpath(itemDescriptionXPath).SetValue(itemDescription); //check attachments if (fileAttach.HasFile && filesize > 0) { string attachmentFilename = Path.GetFileName(fileAttach.FileName); equella.UploadFile(stagingUuid, attachmentFilename, fileAttach.FileBytes); //create the attachment object on the item XElement attachmentsNode = item.ElementOrCreate("attachments"); XElement attachmentNode = new XElement("attachment"); attachmentNode.Add(new XAttribute("type", "local")); attachmentNode.Add(new XElement("file", attachmentFilename)); attachmentNode.Add(new XElement("description", attachmentDescription)); attachmentNode.Add(new XElement("size", filesize.ToString())); attachmentsNode.Add(attachmentNode); } //save and submit equella.SaveItem(itemXml, true); feedback.Text = "<h3>Item \"" + itemName + "\" contributed</h3>"; equella.Logout(); }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { EQUELLASOAP equella = new EQUELLASOAP(ConfigurationManager.AppSettings["username"], ConfigurationManager.AppSettings["password"]); XElement collectionsXml = equella.ContributableCollections(); List <Collection> collections = new List <Collection>(); foreach (XElement collectionNode in collectionsXml.Elements("itemdef")) { string collectionUuid = (string)collectionNode.Element("uuid"); collections.Add(new Collection { Name = (string)collectionNode.Element("name"), Uuid = collectionUuid }); } collections.Sort(new Comparison <Collection>(sortCollection)); foreach (Collection collection in collections) { lstCollections.Items.Add(new ListItem(collection.Name, collection.Uuid)); } equella.Logout(); } }
protected void cmdSearch_Click(object sender, EventArgs e) { ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // EQUELLA SOAP Searching Code ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// EQUELLASOAP equella = new EQUELLASOAP( ConfigurationManager.AppSettings["username"], ConfigurationManager.AppSettings["password"]); XElement searchResultsXml = equella.SearchItems( txtQuery.Text, null, txtWhere.Text, chkOnlylive.Checked, Convert.ToInt32(lstSortType.SelectedValue), chkReverseSort.Checked, Convert.ToInt32(txtOffset.Text), Convert.ToInt32(txtMaxResults.Text) ); StringBuilder results = new StringBuilder(); results.Append("<hr><h3>Searching EQUELLA for \"").Append(txtQuery.Text).Append("\"</h3>"); results.Append("<br>results returned: " + searchResultsXml.Attribute("count").Value); results.Append("<br>results available: " + (int)searchResultsXml.Element("available")); results.Append("<br>results: <ul>"); bool useTokens = Boolean.Parse(ConfigurationManager.AppSettings["useTokens"]); string tokenPostfix = ""; if (useTokens) { tokenPostfix = "?token=" + EQUELLASOAP.GenerateToken( ConfigurationManager.AppSettings["tokenUser"], ConfigurationManager.AppSettings["sharedSecretId"], ConfigurationManager.AppSettings["sharedSecretValue"]); } foreach (XElement result in searchResultsXml.Elements("result")) { XElement resultItem = result.Element("xml").Element("item"); results.Append("<li><a href=\"" + (string)resultItem.Element("url") + tokenPostfix + "\">" + (string)resultItem.Element("name") + "</a></li>"); } results.Append("</ul>"); feedback.Text = results.ToString(); }