<?xml version="1.0" encoding="UTF-8"?>
<!--
 -
 -  $Id$
 -
 -  This file is part of the OpenLink Software Virtuoso Open-Source (VOS)
 -  project.
 -
 -  Copyright (C) 1998-2018 OpenLink Software
 -
 -  This project is free software; you can redistribute it and/or modify it
 -  under the terms of the GNU General Public License as published by the
 -  Free Software Foundation; only version 2 of the License, dated June 1991.
 -
 -  This program is distributed in the hope that it will be useful, but
 -  WITHOUT ANY WARRANTY; without even the implied warranty of
 -  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 -  General Public License for more details.
 -
 -  You should have received a copy of the GNU General Public License along
 -  with this program; if not, write to the Free Software Foundation, Inc.,
 -  51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 -
-->
<v:page name="foaf-import-page"
        xmlns:vm="http://www.openlinksw.com/vspx/ods/"
        xmlns:v="http://www.openlinksw.com/vspx/"
        style="index.xsl"
        doctype="-//W3C//DTD XHTML 1.0 Transitional//EN"
	      doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
	<v:variable name="edit_related" type="int" default="null" param-name="edit" />
	<v:variable name="del_related" type="int" default="null" param-name="del" />
	<v:variable name="rel_iri" type="varchar" default="'rdfs:seeAlso'" persist="temp" />
  <h3>These are other statements made via RDF Triples</h3>
  <v:form type="simple" method="POST" xhtml_enctype="multipart/form-data" action="uiedit_ann.vspx?page=8">
	  <table class="listing" rules="groups">
	      <tr class="listing_header_row">
        <th>URI</th>
		  <th>Relation</th>
		    <th width="50px">Action</th>
	      </tr>
	      <v:data-set name="related"
		  sql="select WUR_ID, WUR_LABEL, WUR_SEEALSO_IRI, WUR_P_IRI from WA_USER_RELATED_RES where WUR_U_ID = :self.u_id"
                  scrollable="1"
                  editable="1"
                  nrows="0">
		  <v:before-data-bind>
if (not e.ve_is_post and self.del_related is not null)
{
  delete from WA_USER_RELATED_RES where WUR_ID = self.del_related and WUR_U_ID = self.u_id;
}
		  </v:before-data-bind>

		  <v:template name="related_rep" type="repeat">
		      <v:template name="related_brows" type="browse">
			  <v:after-data-bind>
if (not e.ve_is_post and control.te_rowset[0] = self.edit_related)
{
  self.related_name.ufl_value := control.te_rowset[1];
  self.related_url.ufl_value := control.te_rowset[2];
  self.rel_iri := ods_iri_qual (control.te_rowset[3]);
}
	                  </v:after-data-bind>
			  <tr class="<?V case when self.edit_related = control.te_rowset[0] then 'listing_row_selected' when mod(control.te_ctr, 2) then 'listing_row_odd' else 'listing_row_even' end ?>">
			      <td>
				  <v:url name="related_ur1"
				      value='--concat (&apos;<img src="images/icons/edit_16.png" hspace="3" border="0"/>&apos;, (control.vc_parent as vspx_row_template).te_rowset[1])'
				      format="%s"
                    url="--sprintf ('uiedit_ann.vspx?page=8&amp;edit=%d', (control.vc_parent as vspx_row_template).te_rowset[0])"
				      xhtml_title="Edit"
				      xhtml_alt="Edit"
				      />
			      </td>
			      <td>
				  <v:label name="lr1" value="--ods_iri_qual ((control.vc_parent as vspx_row_template).te_rowset[3])"/>
			      </td>
            <td nowrap="nowrap">
              <v:url name="related_ur2" value='<img src="images/icons/trash_16.png" hspace="3" border="0"/>Delete'
				      format="%s"
                url="--sprintf ('uiedit_ann.vspx?page=8&amp;del=%d', (control.vc_parent as vspx_row_template).te_rowset[0])"
				      xhtml_title="Delete"
				      xhtml_alt="Delete"
                xhtml_class="img_button"
				      />
			      </td>
			  </tr>
		      </v:template>
		  </v:template>

		  <v:template name="related_footer" type="simple">
		      <tr>
			  <td colspan="3" class="listing_col_action">
			      <vm:ds-navigation data-set="related" type="set" />
			  </td>
		      </tr>
		  </v:template>
	      </v:data-set>
	  </table>
	  <div class="fm">
	      <fieldset>
		  <div id="if_opt">
          <script type="text/javascript">
            <![CDATA[
              function p_init ()
              {
		      var text = new OAT.Dom.text ("Relation");
                var br = new OAT.Dom.create ("br");
		      var sr_cl = new OAT.Combolist([], "<?V self.rel_iri ?>");
		      sr_cl.input.name = 'pred';
		      sr_cl.input.id = 'pred';
		      $("if_opt").appendChild(text);
                $("if_opt").appendChild(br);
		      $("if_opt").appendChild(sr_cl.div);
                sr_cl.addOption("rdfs:seeAlso");
		      sr_cl.addOption("foaf:made");
		      sr_cl.addOption("foaf:member");
		      <?vsp
		      for select distinct WUR_P_IRI as xx from WA_USER_RELATED_RES where WUR_P_IRI not in (sioc..rdfs_iri ('seeAlso'), sioc..foaf_iri ('made'), sioc..foaf_iri ('member')) do
		       {
                  http (sprintf ('sr_cl.addOption("%s");', ods_iri_qual (xx)));
                }
              ?>
		      }
              ODSInitArray.push ( function () { OAT.Loader.load(["combolist"], p_init); } );
            ]]>
          </script>
	          </div>
        <label for="related_url">URI</label>
		  <br/>
        <v:text name="related_url" value="" xhtml_id="related_url" xhtml_size="50" xhtml_class="_validate_ _url_" />
		  <br />
        <label for="related_name">Label</label>
        <br/>
        <v:text name="related_name" value="" xhtml_id="related_name" xhtml_size="50" xhtml_class="_validate_" />
		  <br/>
	<v:check-box name="spb" value="1" xhtml_id="spb"/>
	<label for="spb">Issue Semantic Pingback</label>
        <br/>
	      <span class="fm_ctl_btn">
          <v:button name="related_cancel1" value="Cancel" action="simple">
		      <v:on-post>
self.related_name.ufl_value := null;
self.related_url.ufl_value := null;
self.edit_related := null;
              self.vc_data_bind (e);
		      </v:on-post>
		  </v:button>
          <v:button name="related_save1" value="--case when self.edit_related is null then 'Add' else 'Update' end" action="simple" xhtml_onclick="return validateInputs(this);">
		      <v:on-post><![CDATA[
declare xt, xp, tmp, descr, iri, name, url, pred varchar;
declare stat, msg, dta, mdta, qrs any;

if (not self.vc_is_valid)
  return;

              url := trim (self.related_url.ufl_value);
              name := trim (self.related_name.ufl_value);
              pred := trim (get_keyword ('pred', e.ve_params));
if (not length (url))
  {
    self.vc_is_valid := 0;
    self.vc_error_message := 'The relation IRI cannot be empty';
    return;
  }
if (not length (pred))
  {
    self.vc_is_valid := 0;
    self.vc_error_message := 'The relation cannot be empty';
    return;
  }
              self.rel_iri := pred;
pred := ods_iri_expand (pred);
              if (self.edit_related is null and exists (select 1 from WA_USER_RELATED_RES where WUR_U_ID = self.u_id and WUR_SEEALSO_IRI = url and WUR_P_IRI = pred))
              {
                self.vc_is_valid := 0;
                self.vc_error_message := 'The relation already exists';
                return;
              }

if (self.edit_related is null)
  {
                insert into WA_USER_RELATED_RES (WUR_U_ID, WUR_LABEL, WUR_SEEALSO_IRI, WUR_P_IRI)
                  values (self.u_id, name, url, pred);
  }
else
  {
                update WA_USER_RELATED_RES
                   set WUR_LABEL = name,
                       WUR_SEEALSO_IRI = url,
                       WUR_P_IRI = pred
                 where WUR_ID = self.edit_related;
  }
	      if (self.spb.ufl_selected)
	        {
                  SEMPING.DBA.CLI_PING (sioc..person_iri (sioc..user_iri (self.u_id)), url);
		}
self.edit_related := null;
self.related_name.ufl_value := null;
self.related_url.ufl_value := null;
              self.vc_data_bind (e);
              ]]>
            </v:on-post>
		  </v:button>
	      </span>
	  </fieldset>
      </div>
	</v:form>
</v:page>
