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();
            }
        }
Ejemplo n.º 3
0
        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();
        }