• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

Updating the modified link in C++ plugin

Participant ,
Jun 04, 2021 Jun 04, 2021

Copy link to clipboard

Copied

Hi All,

 

I have tried more than one week to update the modified link through C++ plugin code. After executing the below code, It shows yellow highlighted modified icon. But the link is not updated.

ILinkManager::QueryResult linkQueryResult;
uint32 count=iLinkManager->QueryResources(linkQuery,linkQueryResult);

for (ILinkManager::QueryResult::const_iterator linkIter(linkQueryResult.begin()), end(linkQueryResult.end()); linkIter != end; ++linkIter)
{
    InterfacePtr<ILinkResource> iLinkResource(iDatabase, *linkIter ,UseDefaultIID());
    if(iLinkResource!=nil)
    {
        URI newURI = iLinkResource->GetURI();
        newURI.SetComponent(URI::kScheme, targetScheme);
        
        Utils<Facade::ILinkFacade>()->ReinitResource(UIDRef(iDatabase, *linkIter), newURI);
    }
}

 

Could anyone help me to resolve this issue?

 

Thanks.

TOPICS
SDK

Views

227

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Community Expert , Jun 06, 2021 Jun 06, 2021

I tested this code snippet and it does update the resource but the link is out of date, we need to explicitly update the link. So either you use the RelinkLink method as I demonstrated in another thread or call the link update method explicitly. Try the following, I am still using the path change method and not scheme change, that should also work the same.

IDocument * doc = GetExecutionContextSession()->GetActiveContext()->GetContextDocument();
InterfacePtr<ILinkManager> linkManager(doc,UseDefa
...

Votes

Translate

Translate
Community Expert ,
Jun 06, 2021 Jun 06, 2021

Copy link to clipboard

Copied

I tested this code snippet and it does update the resource but the link is out of date, we need to explicitly update the link. So either you use the RelinkLink method as I demonstrated in another thread or call the link update method explicitly. Try the following, I am still using the path change method and not scheme change, that should also work the same.

IDocument * doc = GetExecutionContextSession()->GetActiveContext()->GetContextDocument();
InterfacePtr<ILinkManager> linkManager(doc,UseDefaultIID());
ILinkManager::QueryResult linkQueryResult;
LinkResourceQuery linkResQuery;
uint32 count=linkManager->QueryResources(linkResQuery, kIDLinkClientID, linkQueryResult);

for (ILinkManager::QueryResult::const_iterator linkIter(linkQueryResult.begin()), end(linkQueryResult.end()); linkIter != end; ++linkIter)
{
    InterfacePtr<ILinkResource> iLinkResource(::GetDataBase(doc), *linkIter, UseDefaultIID());
    if(iLinkResource!=nil)
    {
        URI newURI = iLinkResource->GetURI();
        newURI.SetComponent(URI::kPath, WideString("/Users/manan/Downloads/test.pdf"));
        
        Utils<Facade::ILinkFacade>()->ReinitResource(UIDRef(::GetDataBase(doc), *linkIter), newURI);
        UIDList lnks(::GetDataBase(doc));
        Utils<Facade::ILinkFacade>()->GetResourceLinks(::GetUIDRef(iLinkResource), true, lnks);
        for(int i = 0 ; i < lnks.Length(); i++)
        {
            InterfacePtr<ILink> iLink(lnks.GetDataBase(), lnks.At(i), UseDefaultIID());
            UID newLinkUID;
            iLink->Update(true, UIFlags::kSuppressUI, newLinkUID);
        }
    }
}

P.S.:- Could you tell the scheme change source and destination values that you are trying to manipulate

-Manan

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Participant ,
Jun 06, 2021 Jun 06, 2021

Copy link to clipboard

Copied

LATEST

I tested the code with in my plugin. It is working well. Fantastic!!

Thank you so much Manan.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines